您不能有兩個方法使用相同的signature和return is not part of the signature。
您可以使用界面作爲Animal和Person的父項來完成您想要的操作。這將返回一個適當的人或動物,取決於你作爲參數傳遞的內容。該方法的返回類型將是Interface。
public interface Living {}
和:
public class Animal implements Living {}
對於人:
public class Person implements Living {}
所以你的方法是:
public Living getEntity(Something e) {
// you can return Animal or Person
}
你需要轉換getEntity
返回
Animal myAnimal = (Animal)myClass.getEntity(...);
另一種選擇將使用泛型(你將避免鑄件),並有類返回不同類型的不同實例。一個例子(你可以按照不同的策略):
class Dynamic <T extends Object> {
T t;
T getEntity(Object e) {
return t;
}
void setEntity(T e) {
this.t = e;
}
}
,並使用它:
Dynamic<Animal> animalStore = new Dynamic<>();
Dynamic<Person> personStore = new Dynamic<>();
所以animalStore將返回一個動物,一個personStore人。
這是有道理的,你可以做到這一點,作爲向哪裏看,搜索在谷歌動態類型..我會尋找你,秒 – Infested
這裏例如http://stackoverflow.com/questions/450807 /怎麼辦-I-MAKE-的法回型通用 – Infested