java参数传入泛型类型_Java泛型参数界定到任何一个类型的范围
是否有一種語法或解決方法來將泛型類型參數(shù)限制為任何一種類型的類型?
我知道您可以將類型限制為所有類型的所有類型(即AND邏輯):
public class MyClass & Serializable> { } // legal syntax
有OR邏輯版本,就是這樣的:
public class MyClass | Serializable> { } // illegal syntax
如果沒有支持這個的語法(我不認為有),是否有一個很好的模式的解決方法或方法?
對于某些上下文,一個用例可能是:
/** @return true if the obj is either has the same id,or if obj is the same as id */
public boolean sameAs(T obj) {
if (obj instanceof String) return this.id.equals(obj);
if (obj instanceof MyClass) return this.id.equals(((MyClass)obj).id);
return false;
}
人們似乎正在掛上上面我方法示例的準確語義.我們來試試看吧
public class MyWrapper {
// my class can wrap A or B (unrelated classes). Yes I will probably use instanceof
}
編輯:
在編譯時我不會知道我可能得到(來自外部代碼),所以我想避免每個類型都有具體的類.此外,我必須給我的課程一個調(diào)用我的class.method的外部系統(tǒng),但另一個系統(tǒng)可以給我各種類的實例,而是一個狹義的和已知的品種.
有人對“不純”的例子發(fā)表了評論.那么一個解決方法是使用工廠方法根據(jù)傳入對象的類來選擇我的具體類,但是該工廠方法必須使用instanceof,所以你只是將instanceof移動到另一個地方 – 你仍然需要的instanceof.
還是這個想法不是一個好主意?
總結(jié)
以上是生活随笔為你收集整理的java参数传入泛型类型_Java泛型参数界定到任何一个类型的范围的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中立即执行函数会预编译吗_作为前端你
- 下一篇: 搜索关键字高亮_Django Hayst