2016-08-16 10 views
2

私は自分の問題を説明するために最善を尽くし、うまくいけば誰かが私を助けることができます。Java arraylistにジェネリック型のデータを格納する方法

ペアクラス:

public class Pair { 
    String key; 
    Class<?> value; 
    public Pair(String key, Class<?> value){ 
     this.key = key; 
     this.value = value; 
    }; 
    // you have the setter and getter methods 
} 

ペアクラス:

public class Pairs { 
    Pair[] paris = new Pair[0]; 
    // you have the setter and getter methods 
    public void addPair(Pair pair) { 
     // assume it will add a pair to the array 
    } 
} 

問題:私は、データベーステーブルからデータをロードする必要があります。ここでは列の種類が異なります。 BOOLEAN、VARCHAR、DATEなどがあります。だから、対応するjava型のデータをPairオブジェクトに読み込んで格納する必要があります。ジェネリック型からStringまたはBooleanに変換するにはどうすればよいですか?あなたはどうやって他の方法でやりますか?

私はStringにジェネリック型を変換するための答えを見つけました:?そして、どのように私はクラス<に文字列を変換することができます

>とのArrayListにデータを保存しますか?私が作成したいから:

Pair pair = new Pair("name", value); // but value can be String, Integer, or Boolean 

ありがとう。

+5

私はこれをしないでしょう。それは恐ろしいね。あなたが弱く型付けされた言語を望むなら、Javaは強く型付けされた言語です。 1つを使用してください。さらに、 'value'は' class'のインスタンスではなく 'Class'です。 –

+0

@BoristheSpiderスニペットは良くないと思いますが、Jsonやデータベースなどのデータを扱う場合、言語の種類に関係なく、データをデシリアライズまたはデコードする際には常に安全ではないタイプがあります – Dici

+0

あなたのタプルを表すクラスを定義しますか?別々に各列の代わりに。 –

答えて

4

私は、Pairを一般的にすることによって始めます。何かのように、

public class Pair<T> { 
    String key; 
    T value; 
    public Pair(String key, T value){ 
     this.key = key; 
     this.value = value; 
    }; 
    // ... 
} 

次に、あなたが正しい列タイプのPairをインスタンス化します。同様に、

Pair<String> p = new Pair<>("a", "b"); 

または

Pair<Integer> p = new Pair<>("a", 1); 
+0

これはまさに私が必要とするものです。]本当にありがとうございます。このような恐ろしいコードをおかしかった。私はここで答えを見つけることがうれしいです。 –

関連する問題