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