有沒有辦法從像int或String或double這樣的方法獲取不同的返回類型?來自方法的多於一種返回類型
什麼,我能想到的是使用泛型通配符,不知道
一樣的:
public x m1(){
//implementation
}
x可以是int,字符串長等
有沒有辦法從像int或String或double這樣的方法獲取不同的返回類型?來自方法的多於一種返回類型
什麼,我能想到的是使用泛型通配符,不知道
一樣的:
public x m1(){
//implementation
}
x可以是int,字符串長等
使用Object類作爲返回類型,然後使用Integer或String(Wrapper)類。所以你要返回的地方可以使用Object的getClass()方法來識別它的類。
不,一個方法只能有一個返回類型。如果你想返回不同類型的物體,你可以返回Object
,但是你仍然必須在這種情況下施放。在這種情況下,您也無法返回無箱基元(即int
或double
)。
泛型可能會有所幫助,因爲它們隱含地添加了一些這些類型。 但是,取決於你想達到什麼,它可能不值得。
我們使用這樣的事情,例如:
class BasicBuilder<T extends BasicBuilder<T>> {
private int value;
public T setValue(int v) {
value = v;
return (T)this;
}
}
class ConcreteBuilder extends BasicBuilder<ConcreteBuilder> {
//more here
}
這樣,當我有一個ConcreteBuilder
實例,並在其上調用setValue(...)
,我會得到一個ConreteBuilder
參考回來。請注意,這隻適用於泛型正確使用且演員陣容有效的情況。
你可以在帶有泛型的HotSpot Java 6中做到這一點,但這被認爲是一個錯誤,Java 5.0和Java 7都支持這一點。
http://vanillajava.blogspot.com/2011/02/with-generics-return-type-is-part-of.html
的Java一般不情境感知,但這是隱含類型支持Java 7中不斷變化的,而不是隱含的類型與Java 8
常見的解決方法是指定的類型名稱。例如ByteBuffer或DataInput與getInt()
,getLong()
,getDouble()
返回類型爲'Object' – Rakesh 2012-03-14 09:41:53
爲什麼你需要這個? – Matthias 2012-03-14 09:42:20
也許這有助於http://stackoverflow.com/questions/450807/java-generics-how-do-i-make-the-method-return-type-generic – hellectronic 2012-03-14 09:43:12