intやStringやdoubleのようなメソッドから異なる戻り値の型を取得する方法はありますか?メソッドから複数の戻り値タイプ
私は何のような
わからないジェネリック医薬品のワイルドカードを、使用していると考えることができます:
public x m1(){
//implementation
}
xはint型することができ、文字列、長いなど
intやStringやdoubleのようなメソッドから異なる戻り値の型を取得する方法はありますか?メソッドから複数の戻り値タイプ
私は何のような
わからないジェネリック医薬品のワイルドカードを、使用していると考えることができます:
public x m1(){
//implementation
}
xはint型することができ、文字列、長いなど
戻り値の型としてObjectクラスを使用し、IntegerまたはString(Wrapper)クラスを使用します。したがって、あなたが返すポイントは、そのクラスを識別するためにObjectのgetClass()メソッドを使用することができます。
いいえ、メソッドの戻り値の型は1つだけです。異なるタイプのオブジェクトを返す場合は、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 8とこれは、Java 7に暗黙タイプのサポートと変更されず、暗黙の型
共通の問題を回避するには、タイプを指定することです名。例えばByteBufferまたはDataInputでgetInt()
、getLong()
、getDouble()
戻り値の型を 'Object'とします – Rakesh
なぜこれが必要ですか? – Matthias
これはおそらく役立ちますhttp://stackoverflow.com/questions/450807/java-generics-how-do-i-make-the-method-return-type-generic – hellectronic