私は、文字列を読み込み、暗黙の(最良の適合)データ型の値を返すメソッドが欲しいと思います。私はコードが混乱を作成する可能性が高いので、 "メイン"でデータ型変換の文字列を行うことを避けたいと思います。これは可能ですか?異なる型を返すメソッドを作成できますか?コンストラクタはどのように見えますか?入力によって決定されるプリミティブデータ型を返すJavaメソッドを作成しますか?
答えて
はあなたがで終わるタイプを分類する方法として列挙型を探ることができます。あなたはそれを使用したいと言っているわけではないので、これは最良ではないかもしれませんが、あなたが与えた要件を処理する方法で行うことができます。
public class ClassifiedType
{
public enum ClassifiedTypeType { INTEGER, FLOAT, STRING, BOOLEAN };
ClassifiedTypeType typeType = null;
int integerValue;
float floatValue;
String stringValue;
boolean booleanValue;
public ClassifiedType(int i) { integerValue = i; typeType = ClassifiedTypeType.INTEGER; }
public ClassifiedType(float f) { floatValue = f; typeType = ClassifiedTypeType.FLOAT; }
// etc.
public int getIntegerValue()
{
if (typeType != ClassifiedTypeType.INTEGER)
{
throw new IllegalArgumentException("Attempting getInteger on type of " + this.toString());
}
else
{
return integerValue;
}
}
// do gets for other types similarly.
public static ClassifiedType getClassifiedType(String string)
{
// parse the string, determine which type you want,
// instantiate a ClassifiedType with its value and
// and type, and return it.
}
}
他のクラスは、彼らがそれを必要とする限り、そこから取得する値の種類を決定するために(うまくいけば、より良い名前を持つ)ClassifiedTypeTypeを使用することができます。
とにかく、Objectを返してから、instanceof
を使って何を処理しているのか把握する必要があります。これが必要な場合は、非プリミティブにも拡張されます。
異なるプリミティブ型を返すことはできません。あなたにできることはObject
を返すようメソッドを宣言し、実行時のリターン箱入りのプリミティブである:などInteger
のインスタンス、Double
、Boolean
、
これは間違いありませんが、私はオペアンプの質問全体に完全に答えているとは感じません – SeanRamzan
OPがフォローアップの質問をしない限り、追加することはありません。 –
単一のJavaメソッドは複数のタイプを返すことはできません。これは、Javaが強く型付けされた言語であるためです。
これを達成する方法はいくつかあります。あなたはOPで述べたように、コンストラクタのルートを移動したい場合、それは次のようになります。
public class Demo(){
Demo(String str){
// Do something...
}
Demo(int newInt){
// Do something...
}
// Other constructors for other types here
}
これは私のアプローチです。 'isString()'、 'isInt()'、 'getAsString()'、 'getAsInt()'などの便利なメソッドは、醜い型キャストを減らす/隠すことができます。 – Mshnik
さて、これを行うためのよりクリーンな方法があると私は同意しますが、OPはコード内のデータ型の手動チェックを避けたいと考えられます。正しいヘルパーメソッドを使用するには、手動で変換する必要があります。 OPについては、上記のようにコンストラクタメソッドを使用すると、タイプ変換がバックグラウンドで行われていることを指摘したいと思います。あなたのケアが最適化されているかどうかは重要です。 – SeanRamzan
- 1. Javaの誤ったプリミティブデータ型ですか?
- 2. Javaで新しいプリミティブデータ型を作成できる
- 3. プリミティブデータ型のJava
- 4. データセットによって作成されたGetRowsメソッドはnullを返します
- 5. USINGによって作成されたオブジェクトを返します
- 6. 他のすべての属性をオーバーライドせずに、jQueryによって作成されたテキスト入力を隠し入力値に設定しますか?
- 7. Javaメソッド追加の入力行を作成する - それをどのように取り除きますか?
- 8. Javaでユーザ入力から呼び出すメソッドを決定する
- 9. クラスジェネリックス - 返すメソッドの型を決める
- 10. Javaプリミティブデータ型がjavaデータ型と呼ばれるのはなぜですか?
- 11. どのようにオブジェクトの配列を自動的に作成するのですか?(ユーザーの入力によって決定される数)
- 12. 関数によって呼び出されるメソッドを決定する
- 13. dataweave lookupによって返されるペイロードを使用するかどうかを決定できますか?
- 14. MongoCollection.find()によって返されるデータ型は何ですか?
- 15. quandl.getによって返される型は何ですか?
- 16. ユーザーが入力数を決定した後にユーザー入力から辞書を作成する(Python)
- 17. JavaメソッドはBufferedReader入力を待っていませんか?
- 18. コンポーネントがrouter-outletによって作成されたときに入力バインディングを設定する方法は?
- 19. `close()`や `shutdown()`メソッドを使って型を返す `destroyMethod`を設定します
- 20. ジェネリック型のメソッドから値を入力して返す方法は?
- 21. Javaのジェネリックのプリミティブデータ型とはどのように違いますか?
- 22. 入力された最小値はどのようにして決定されますか?
- 23. Graknは、エンティティによって作成されたエンティティを作成しますか?
- 24. Type.GetType()によって返された型を使用してC#
- 25. 条件が満たされるまで入力を要求してこの入力を返すメソッド
- 26. endecaによってトリガーされるルールを決定する
- 27. callBack(onSuccess())を実装するメソッドは、onSucess()によって返された値を返しますか?
- 28. ng-repeatによって作成された入力の値を取得
- 29. steady_clockからの経過時間をプリミティブデータ型(double)として返す方法
- 30. 入力中に入力オファーオプションを作成しますか?
この値で何をする必要がありますか?型チェックを行うと、複雑な変換自体が隠されていても、混乱することに戻ります。 – Thilo
唯一の可能な戻り値の型は 'Object'であるため、返されたデータの型を知るための呼び出し側の責任が与えられるので、これは非常に悪い考えです。この質問は、より多くの文脈がなければ、本当に答えることはできません。具体的には、これをどのように使いたいか、そして 'Object'を返すことの意味について考えている証拠があります。 –