Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #8561

Re: generic constructor call with concret type

From Philipp Kraus <philipp.kraus@flashpixx.de>
Newsgroups comp.lang.java.programmer
Subject Re: generic constructor call with concret type
Date 2011-10-05 11:58 +0200
Organization 1&1 Internet AG
Message-ID <j6h9o9$4np$1@online.de> (permalink)
References <j6h246$uhn$1@online.de> <0dba7690-f51d-4b1f-bd59-92463784de71@20g2000yqq.googlegroups.com>

Show all headers | View raw


On 2011-10-05 11:22:50 +0200, Robert Klemme said:

>     @SuppressWarnings("unchecked")
>     public Run(Class<? extends T> cl) {
> 	if (cl == Float.class) {
> 	    helper = (Inner<T>) new DoFloat();
> 	} else if (cl == Double.class) {
> 	    helper = (Inner<T>) new DoDouble();
> 	} else {
> 	    throw new IllegalArgumentException("Invalid type: " + cl);
> 	}
>     }
> 
>     @Override
>     public T doSomething() {
> 	return helper.doAnother();
>     }
> 
>     // Test
>     public static void main(String[] args) {
> 	final Base<Double> rd = new Run<Double>(Double.class);
> 	final Base<Float> rf = new Run<Float>(Float.class);
> 	System.out.println("Double: " + rd.doSomething());
> 	System.out.println("Float: " + rf.doSomething());
> 
> 	final Base<Integer> ri = new Run<Integer>(Integer.class);
> 	System.out.println("Integer: " + ri.doSomething());
> 
> 	// final Base<Integer> wontCompile = new Run<Integer>(Double.class);
>     }
> }

so I need a parameter for the type

> Btw, what do you need that for?

See my posting some days ago. I use a JNI call with C++ templates so I 
must set the template
parameter on compile-time. Within the JNI call I can't determine the 
generic argument of the
instantiated java object (because it is set on java-compile-time). So I 
create dual JNI calls one
for float and one for double, but I must decide on the java ctor call 
if I instantiate the float or double
object, you do this in the with if(cl == Float.Class), in my source 
code the DoFloat is the JNI call
for the C++ template float (otherwise the double).

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

generic constructor call with concret type Philipp Kraus <philipp.kraus@flashpixx.de> - 2011-10-05 09:48 +0200
  Re: generic constructor call with concret type Robert Klemme <shortcutter@googlemail.com> - 2011-10-05 02:22 -0700
    Re: generic constructor call with concret type Philipp Kraus <philipp.kraus@flashpixx.de> - 2011-10-05 11:58 +0200
      Re: generic constructor call with concret type Robert Klemme <shortcutter@googlemail.com> - 2011-10-05 22:14 +0200

csiph-web