如何打印通用java类型的类型?
反射?任何招数?
public class Foo<K> {
private K element;
@Override
public String toString() {
return "Type: " + K;
}
}
Run Code Online (Sandbox Code Playgroud)
element.getClass().getSimpleName() 可能会做你期望的事情.
由于类型擦除,您无法知道构造类时类型参数是什么.但是您可以使用element.getClass()获取元素的运行时类型(可能是类型参数的子类,尽管不能保证 - 可能有未经检查的强制转换).
但是,有一些技巧可以访问类型参数.Guice可以做一些技巧.此外,如果你创建一个Foo的子类,如下所示:( Foo<Integer> foo = new Foo<Integer>(){};注意{}它使它成为Foo的匿名子类),然后可以访问type参数,ParameterizedType type = (ParameterizedType) foo.getClass().getGenericSuperclass()然后调用ParameterizedType的方法.这是Guice利用的Java反射API的特性.
| 归档时间: |
|
| 查看次数: |
5153 次 |
| 最近记录: |