假設我有以下類:抽象類和泛型
public abstract class AbstractClass {
...
}
public class ConcreteClass extends AbstractClass {
...
}
建設者:
public class Builder{
static public ConcreteClass build(){
...
}
}
和通用功能的一些其它類:
public <T extends AbstractClass> T myFunction(){
T a = Builder.build();
return a;
}
這是我的理解編譯器應該有足夠的信息來允許這樣的賦值,但是,它會拋出一個錯誤:
Type mismatch: cannot convert from ConcreteClass to T
爲什麼是這樣的,這種轉讓的潛在危險是什麼?
爲什麼你想讓它在T上泛化,當你只想返回'AbstractClass'? –
正如你試圖使用繼承的生成器模式可能[這篇文章在這裏](http://stackoverflow.com/questions/21210870/in-java-can-you-use-the-builder-pattern-with-required - 和 - 可重新分配的字段/ 21211472#21211472)可能會有所幫助,雖然它在這篇文章中有點錯位,因爲我在發佈該文章後完全理解了這個問題。 –
也許這個例子有點太簡單了,我只是想展示賦值部分的例子,其他的都是不相關的。 –