![](/img/trans.png)
[英]How can I get the proper enum that implements a particular interface in Java?
[英]How can I determine if Java generic implements a particular interface?
如何確定Java泛型是否實現特定接口?
我嘗試了幾種不同的方法,但它們都導致了“無法找到符號......變量T”的錯誤。
第一次嘗試
public abstract class AbstractClass<T> {
public void doFoo() {
if (T instanceof SomeInterface){
// do stuff
}
}
}
第二次嘗試
public abstract class AbstractClass<T> {
public void doFoo() {
if (SomeInterface.class.isAssignableFrom(T)) {
// do stuff
}
}
}
使用對象的類添加構造函數。
public abstract class AbstractClass<T> {
private Class<T> clazz;
public AbstractClass(Class<T> clazz) {
this.clazz = clazz;
}
public void doFoo() {
if (clazz instanceof SomeInterface){
// do stuff
}
}
}
向T
類型添加約束,使用T extends SomeInterface
,從而將類型T
限制為SomeInterface
的子類型。
public abstract class AbstractClass<T extends SomeInterface> {
public void doFoo() {
// do stuff
}
}
綁定它。
public abstract class <T extends SomeInterface> { }
然后,當你作為方法的參數傳遞時,你保證它至少是 SomeInterface
。
從您的方法來看,沒有辦法,因為您沒有在代碼中的任何位置引用T
的實例。 如果你為它添加了一個參數,你至少可以得到更多。
public void doFoo(T obj) { }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.