我怎样才能做到这一点?
public class GenericClass<T>
{
public Type getMyType()
{
//How do I return the type of T?
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试的所有东西总是返回类型Object而不是使用的特定类型.
我刚学会了这种精美的语法
Collections.<String>emptyList()
Run Code Online (Sandbox Code Playgroud)
得到一个空List的元素,这些元素应该是类型的String.Java的源代码如下:
public static final List EMPTY_LIST = new EmptyList<Object>();
:
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我以这种方式编写一个方法,其中泛型类型没有出现在参数列表中,那么我有什么方法可以访问成为的实际类T?
我说,到目前为止,我的代码处理方法本来就是这样
private <T> T get(String key, Class<T> clazz) {
// here I can do whatever I want with clazz, e.g.:
return clazz.cast(value);
}
Run Code Online (Sandbox Code Playgroud)
如果我删除了clazz参数,我将无法做到cast().显然我能做到
return (T) value;
Run Code Online (Sandbox Code Playgroud)
但这给了我通常的警告Type safety: Unchecked cast from Object to T.好的,@SuppressWarnings("unchecked")在这里有所帮助,但实际上我想用该方法的预期返回类型做一些事情.如果我添加一个局部变量
T retValue;
Run Code Online (Sandbox Code Playgroud)
我必须用一些东西初始化它,null但没有帮助.在我分配之后
@SuppressWarnings("unchecked") …Run Code Online (Sandbox Code Playgroud)