有没有办法从像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