からクラスのインスタンスを作成します。それらの多くが存在する可能性があり、単一のもので数が異なる可能性があるので、属性をMap<Attribute, String>
として保存しています。それを1つのテーブルに保持するには、アプリケーション自体のJavaタイプに関係なく、すべての値がStringに変換されます。は、私はこのような何かを持っているクラス名
しかし、それらをデータベースからロードするときに、正しいタイプにキャストする必要があります。だからAttribute
クラスのtype
パラメータをクラス名文字列として保存します。
私は、リフレクションを使用して、文字列で指定されたクラスのインスタンスを取得し、それを値で埋めることができることを理解しました。
このスニペットのように:
Integer i = 17;
String iVal = i.toString();
String iType = i.getClass().getName();
Object reVal = Class.forName(iType).newInstance();
しかし、私は文字列/カレンダー/整数/ダブルのいずれかとすることができる正しい型にreVal
をキャストする必要があります...
はこれを行うことができます?そしてもしそうなら、どうですか?
スニペットでは、「reVal」はjava.lang.Classタイプです。タイプが互換性がない場合、java.lang.Classからjava.lang.Stringへの "reVal"のキャストはどうですか?それは私にとって無効な質問のようです、あなたはこれを明確にすることができますか? – piepera
"それを1つのテーブルに保持する" なぜですか? –
リフレクションは慎重に使用する必要があります。その使用はパフォーマンスに悪影響を与えます – Apurv