これはできますが、あまり役に立ちません。それらのスコープはArrayList
if文の本体だからです。
次のことができます。
ArrayList<Object> lineBuffer;
if(Main.NEW_STYLE) lineBuffer = new ArrayList<LogFileLine>();
else lineBuffer = new ArrayList<String>();
そして、それに応じてオブジェクトをキャストします。もう 1 つの方法は、コンテナ インターフェイスを作成することです。これは、次のタイプになりますArrayList
。
ArrayList<LogInterface> lineBuffer = new ArrayList<LogInterface>();
lineBuffer.add(new LogInterface_LogFileLine(aLogFileLine));
lineBuffer.add(new LogInterface_String("lalelu"));
次に、2 つのバージョンの を実装します。1つは( ) をLogInterface
保持し、もう 1 つは( ) を保持します。String
LogInterface_String
LogFileLine
LogInterface_LogFileLine
しかし、あなたは boolean という名前を付けたのでNEW_STYLE
、いつか「古いスタイル」を完全に置き換えると思うので、私からの最初の提案を行うことをお勧めします。if (Main.NEW_STYLE) ; else ;
次に、にアクセスするすべての場所でこれを行う必要がありますlineBuffer
。しかし、必要がなくなったら、古いものを追い出す方がはるかに簡単です。