2010-08-10 115 views
2

我正在研究廢棄一組Java類,以便它們不再被使用。我不想關閉不推薦使用的編譯器警告,但是我發現如果我的一個不贊成使用的類導入另一個不贊成使用的類,我也會得到一個警告。我不想修改我棄用的代碼,但我也不希望發生這些情況的警告。是否有辦法(a)註釋/註釋代碼以禁用警告(b)在這些情況下關閉編譯器警告?我使用的是NetBeans,所以如果有NetBeans特定的方式,那也可以。使用已棄用類的Java棄用類 - 是否可以關閉編譯器警告?

下面是一個簡單的例子:

第一類:

/** 
* @deprecated No longer in use. 
**/ 
@Deprecated 
public class OldSubClass { 
} 

第二類:

import com.old.package.OldSubClass; // Don't want this to create a warning 

/** 
* @deprecated No longer in use. 
**/  
@Deprecated 
public class OldClass { 
     // code that makes use of OldSubClass that I don't want to change ... 
     // Any methods that use OldSubClass are also deprecated ... 
} 

好吧,這是最起碼的,讓我來重現問題(甚至與@SupressWarnings開啓:

母類:

import another.pack.ChildClass; 

@SuppressWarnings("deprecation") 
public class MotherClass { 
} 

子類:

package another.pack; 

/** 
* @deprecated 
*/ 
public class ChildClass { 
} 

注意,它是JavaDoc的@deprecated標籤,即使允許編譯拋出警告。如果我只使用@Deprecated註解,我從來沒有得到警告(即使沒有壓力)。

+0

可能的重複http://stackoverflow.com/questions/1858021/suppress-deprecated-import-warning-in-java – 2010-08-10 15:22:58

回答

3

您可以使用此批註等:

@SuppressWarnings(「棄用」)

你把這個註釋中只有媽媽類。導入OldClass時將保留警告,但OldSubClass的「遞歸警告」將被忽略。

+0

這似乎不適用於導入。但是,我發現它確實可以在方法本身上工作,所以從這個角度來看它是有幫助的。 – MikeTheReader 2010-08-10 15:15:05

+0

在這個例子中的「母親班」,這將是OldClass,是否正確?如果我在課堂上把壓制放在那裏,導入的警告仍然會出現。 – MikeTheReader 2010-08-10 15:19:49

+0

如果將註釋放在類級別(而不是方法)上,它將起作用。 – 2010-08-10 15:20:27

0

NetBeans使用javac(來自JDK 7)來確定何時以及在何處顯示這樣的警告,因此任何與jdk7/bin/javac一起使用的東西都應該在IDE編輯器中以同樣的方式工作。

+0

對原始問題進行了編輯,以顯示即使開啓了@SuppressWarnings(「deprecation」),仍然會收到警告的最小示例。這是編譯日誌中的確切警告: ... \ src \ java \ MotherClass.java:1:warning:[deprecation]另一個.pack文件中的another.pack.ChildClass已被棄用 import another.pack.ChildClass ; – MikeTheReader 2010-08-10 20:31:49

+0

當使用java 1.6.0_18 javac命令(使用-Xlint:已棄用)時,我也會得到相同的警告,所以它不僅僅是NetBeans。 – MikeTheReader 2010-08-10 20:42:50

+0

討厭繼續添加到這個,但只使用javac編譯器,如果在MotherClass中打開壓縮並且ChildClass具有@Deprecated註釋並且沒有JavaDoc標記,我也會得到警告。 (儘管如此,我沒有在NetBeans中得到警告。) – MikeTheReader 2010-08-10 20:46:45