package ro.ex;
import java.io.IOException;
import java.lang.reflect.Type;
class Ex {
public boolean isIns(Object o, Class t) {
o instanceof t;
}
public static void main(String[] args) throws IOException {}
}
上面的代码会引发未知的类 “T”
我的问题是:如何通过上面的代码。
更新:
下面的代码无法通过IntelliJ IDEA的语法检查器
public boolean isIns(Object o, Class<?> t) {
return o instanceof t;
}
所以在思想正确的代码是:
public boolean isIns(Object o, Class<?> t) {
return t.isAssignableFrom(o.getClass());
}
更简单的方法是:
package ro.ex;
import java.io.IOException;
import java.lang.reflect.Type;
class Ex {
public boolean isIns(Object o, Class t) {
return t.isInstance(o);
}
public static void main(String[] args) throws IOException {
Object r = new Ex().isIns("", String.class);
System.out.println(r + "\t\t" + new Exception().getStackTrace()[0].getFileName() + ":" + new Exception().getStackTrace()[0].getLineNumber());
}
}
如何这个问题涉及到Ruby? – Surya 2014-10-27 12:29:25
我不知道Java,但你有没有尝试:'public void IsIns(Object o)'? 。你应该指定一个* Type *,而不是一个实例 –
2014-10-27 12:30:41
这通常是一个糟糕的设计的标志,它违背了多态性的目的。研究泛型或学习如何做多态。该方法不应该返回布尔值而不是void吗? – duffymo 2014-10-27 12:31:28