によって「ダイナミックで... ...その実装されている、私は次のコードを置き換えることが可能であるかどうかを知りたいストレージのインタフェースとStorageXXであることを知ってダイナミックコンストラクタ
Storage storage;
switch (storageType) {
case "list":
storage = new StorageList();
break;
case "map":
storage = new StorageMap();
break;
case "db":
storage = new StorageDB();
break;
default:
throw new UnsupportedStorageTypeException();
}
をスイッチを交換String型のパラメータ(storageType)を受け取ったStorageのコンストラクタは、それぞれの場合に必要なインスタンスを返します。
Storageが抽象クラスである必要はありません。
可能であれば、switch文を避ける方が好きです。
[Javaのクラス名からクラスオブジェクトを取得する方法](https://stackoverflow.com/questions/1438420/how-to-get-a-class-object-from-the-class)の可能な複製-name-in-java) – UnholySheep
'StorageDB'の名前を' StorageDb'に変更した場合、名前を動的に構築し、リフレクションを使用することができます。 – Andreas
別の質問からの[この回答](https://stackoverflow.com/a/29220300/6893866)はあなたのニーズに十分に合っていますか? (Java 8が必要) – Tezra