Generics: Using a typed class as a key.

C

Cherukan

Java's runtime discard of class type information seems a bit hassle to
work around,
preventing lot of intuitive usages.

T someMethod( Class<T> clazz, T t) {
map.put(clazz, t);
return map.get(clazz);
}
works with passing in regular non-generic classes, but not
with classes with a type argument.

Another example:

import java.util.Arrays;
import java.util.EventListener;

import javax.swing.event.EventListenerList;


public class Test
{
EventListenerList list = new EventListenerList();

Test()
{
MyListener<Integer> m1 = new MyListener<Integer>();
MyListener<String> m2 = new MyListener<String>();

// this does not work
// list.add(MyListener<Integer>.class, new MyListener<Integer>());

// so use this

list.add(m1.getClass(), new MyListener<Integer>());
list.add(m2.getClass(), new MyListener<Integer>());

// Now how do I get just a list of Listeners that are have
// the Integer type argument?
// i.e.
// MyListener<Integer>[] integerListeners = ??????


}


public static class MyListener<T> implements EventListener
{
}
}

Any comments or suggestions?

Thx
 
T

Thomas Hawtin

Cherukan said:
Java's runtime discard of class type information seems a bit hassle to
work around,
preventing lot of intuitive usages.

T someMethod( Class<T> clazz, T t) {
map.put(clazz, t);
return map.get(clazz);
}
works with passing in regular non-generic classes, but not
with classes with a type argument.

// Now how do I get just a list of Listeners that are have
// the Integer type argument?
// i.e.
// MyListener<Integer>[] integerListeners = ??????
public static class MyListener<T> implements EventListener
{

public abstract Class said:
}
}

Any comments or suggestions?

Nested generics can be confusing, and if unnecessary should be avoided.

Tom Hawtin
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top