2010-07-22 69 views
4

我想知道的类中的方法的通用返回类型,像这样:获取返回泛型类的可能类吗?

<T> T getEntry() { System.out.println(T.class) } 

的问题是,这不是一个通用类,这只是一个通用的方法,这样我就可以”从类中提取泛型类型。我想要达到的是知道什么具体类型的呼叫者想要而不需要类,如:

<T> T getEntry(Class<?> clazz); 

这可能吗?

+5

都能跟得上泛型在运行时删除 – Kylar 2010-07-22 20:02:47

+0

到底什么你回答。!几秒后我发布了!你是某种机器人吗? – einundswanzig 2010-07-22 20:10:02

+0

其实,1分9秒。时间够了:) – BalusC 2010-07-22 20:18:17

回答

5

那么,如果奇勒是对的,我已经诉诸:

<T> T getEntry(String name, Class<T> clazz) 

我想避免额外的参数:(

+2

然而,这取决于你需要'Class '。如果它是例如创建'newInstance()',那么它确实是强制性的。但是,如果只是施加'return'值,那么你也可以只执行'return(T)value'而不是'return clazz.cast(value);'并且使用@SuppressWarnings(“unchecked”) '; – BalusC 2010-07-22 20:23:58

+0

我需要用Spring SpEL创建一个对象的实例,如下所示: parser.parseExpression(expr).getValue(clazz.getName()); – einundswanzig 2010-07-22 20:26:36

+0

是的,传入运行时类型是强制性的。 – BalusC 2010-07-22 20:27:25