2
這是Java 1.6接口:如何返回一個泛型類型而不明確指定其參數?
interface Foo<T extends Foo<T>> {
}
這是一個工廠,它應該返回"Foo<Foo>"
:
interface Factory {
<T extends Foo<T>> Foo<T> find();
}
不能編譯工廠類:
incompatible types; inferred type argument(s) java.lang.Object do not conform
to bounds of type variable(s) T
[ERROR] found : <T>Foo<T>
[ERROR] required: java.lang.Object
這裏有什麼問題?
感謝您的解釋,幫助很多。在我的用例中,我希望'Factory.find()'返回'Foo',總是(在問題中提到)。在這種情況下,我應該如何聲明'find()'? –
yegor256
2011-04-17 15:00:05
'Foo'不是一個完整的類型,因爲'Foo'需要一個類型參數。也許'Foo >'? –
2011-04-17 15:04:14
@Paulo你是對的,'Foo >'工作正常。如果您將它發佈爲答案,我很樂意將其選爲最佳答案。 – yegor256 2011-04-17 15:10:58