【发布时间】:2015-01-31 20:20:30
【问题描述】:
我在比较 java 泛型类型是否为 Void 时遇到问题。换句话说,我试图确保我的泛型类型 T 是否为 Void。 我的示例实现:
public abstract class Request<T>{
private T member;
protected void comparing(){
if(T instanceof Void) // this make error "Expression expected"
runAnotherMethod();
//if I type
if(member instanceof Void) //Incovertible types; cannot cast T to java.lang.Void
runAnotherMethod();
}
protected void runAnotherMethod(){...}
}
public class ParticularRequest extends Request<Void>{
}
我尝试通过instanceof、Class<T> 和Class<Void>、T.class 和Void.class 比较id。
但是 AndroidStudio 在每个尝试过的情况下都会向我显示错误:(
你能帮我比较一下吗? 谢谢。
【问题讨论】:
-
您遇到了什么错误?他们可能会解释为什么每种方法都不起作用......
-
我不确定该代码的用途是什么,但 Void 是一个不可实例化的类,因此 intanceof 将始终返回 false
-
我想使用它来确保 Request 的子类中更详细的泛型类型。我在父子类的其他方法中使用它