これは可能ですか?文字列の値に応じて、あるクラスまたは別のクラスからオブジェクトをインスタンス化できますか?
私はこのようなコードを持っています:
public Map<Language, IConverter> converters;
// ...
public IConverter buildConverter(Language lang) {
IConverter converter = new ???(buildMap(lang)); <---- Problem here
converters.put(lang, converter);
}
public Map<Integer, String> buildMap(Language lang) {
// ...
}
どこLanguage
で は、言語を識別する文字列を含む Bean クラスであり、IConverter
いくつかの (未定義の量の) コンクリートによって実装されるインターフェースConverter
です。
if
サポートされているごとに句を追加する必要がありConverter
ますか? おそらくマップなどを使用して、どの文字列がどのクラスに属しているかを特定する方法はありますか?
Language クラスは、浅いものでスケーリングが見られないため、削除する可能性があります。
編集
Jesper の回答の使用を終了しましLanguage
た。完全な言語名を含むようにクラスを調整し、パッケージ名、言語名、および「コンバーター」を連結する必要がありました。
少年、最初は反射が怖いです。非常に多くの例外があります。