混合型にマップするHashMapを作成する方法を探しています。Javaマッピングの混合型
たとえば、以下は、パイソン(Pythonのdict
は、Java HashMap
に類似していることに注意)で動作しますが:
d = dict()
d["str"] = "This is a string"
d["flt"] = 1.23
d["int"] = 5
とd[x]
にアクセスするときに、適切なタイプ(文字列、フロート、返されますこの例ではint)。
Javaでは、私はHashMap<String, Object>
と一緒に行くことができましたが、どのオブジェクトがどのタイプであるかをすぐに知る方法はありません。
代わりに、私は現在オブジェクトを保持するMixedType
クラスを作成するだけでなく、元のタイプ情報も作成して、後でダウンキャストできるようにしようとしています。例:これは私がはそれが現在そのm1 cannot be resolved to a type
を訴えてコンパイルしていないよう :-)行うにをしようとしているものであること
public class MixedMap
public static class MixedType
{
public Class<?> cls;
public Object val;
public MixedType(Class<?> c, Object v)
{
this.cls = c;
this.val = v;
}
}
public static void main(String args[])
{
MixedType m1 = new MixedType(String.class, "This is a String");
System.out.println((m1.cls)m1.val);
}
}
注意。
私の質問は、どうすれば修正できますか?同じ目標を達成するための他の方法も歓迎されるでしょうが、コンパイラの型チェック能力が制限されていると私には言い聞かせてください。私はそれを知っています。
ありがとうございます。
私はちょうど質問することができます:一度取得したオブジェクトで何をしますか?私は通常、キャストすることを避けるためにこれを設計するより良い方法があるように感じます。 –
普通のオブジェクトに情報が格納されていても、キャストした後に何をすべきかをどのように知っていますか? –
確かに、HashMapを "設定"タイプのオブジェクトとして使用します。このオブジェクトでは、解析してこのマップに入れる特定の設定を指定します。プログラムの特定の時点で、特定の構成オプションが設定されているかどうかを確認し、使用する場合はデフォルトを使用します。混合型の必要性の理由は、いくつかの設定オプションが文字列、その他の浮動小数点数、他の整数などです。 – jedwards