|
Duplicate :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
---%<---
$ rm *.class; cat A.java B.java C.java; javac C.java; javac -version -Xlint:deprecation C.java
@Deprecated
public class A {}
@Deprecated
public class B {}
public class C {
@SuppressWarnings("deprecation")
A a;
@SuppressWarnings("deprecation")
void m() {
B b = null;
}
}
javac 1.5.0_08
C.java:3: warning: [deprecation] A in unnamed package has been deprecated
A a;
^
1 warning
---%<---
It seems that @SuppressWarnings("deprecation") works fine for local variables but has no effect on fields whose type is deprecated. Adding @SuppressWarnings("deprecation") to the class does not help either.
Same bug in JDK 6 b95.
Another more comprhensive test case:
@Deprecated
class A {}
class B {
@SuppressWarnings("deprecation")
A a;
@SuppressWarnings("deprecation")
A m(A a) {return null;}
@SuppressWarnings("deprecation")
class C extends A {}
}
Which gives the following warnings:
TestX.java:6: warning: [deprecation] A in unnamed package has been deprecated
A a;
^
TestX.java:9: warning: [deprecation] A in unnamed package has been deprecated
A m(A a) {return null;}
^
TestX.java:9: warning: [deprecation] A in unnamed package has been deprecated
A m(A a) {return null;}
^
TestX.java:12: warning: [deprecation] A in unnamed package has been deprecated
class C extends A {}
^
4 warnings
|