你可以做到這一點,但它不會幫助你很多。因爲那些ArrayList
的範圍是if語句的主體。
你可以做到以下幾點:
ArrayList<Object> lineBuffer;
if(Main.NEW_STYLE) lineBuffer = new ArrayList<LogFileLine>();
else lineBuffer = new ArrayList<String>();
,然後相應地投你的對象。另一種方法是創建一個容器接口,那麼這將是你的ArrayList
類型:
ArrayList<LogInterface> lineBuffer = new ArrayList<LogInterface>();
lineBuffer.add(new LogInterface_LogFileLine(aLogFileLine));
lineBuffer.add(new LogInterface_String("lalelu"));
你會然後實現LogInterface
,一個拿着String
(LogInterface_String
)兩個版本,另外一個拿着一個LogFileLine
(LogInterface_LogFileLine
)。
但是,既然你命名了你的布爾值NEW_STYLE
,我想它會在完全替換掉舊的風格的時候出現,所以我建議從我這裏做第一個建議。您必須在您訪問您的lineBuffer
的任何地方都要這樣做if (Main.NEW_STYLE) ; else ;
。但是,一旦你不再需要它,將老東西踢出去會容易得多。
這是使用原始類型('ArrayList'),這幾乎總是一個壞主意(除了當你需要它的向後兼容性)。 – 2012-07-25 08:44:11