我有一个不推荐使用的方法接口:
public interface A
{
@Deprecated
public String getUUID();
}
另一个具有相同但未弃用的方法的接口:
public interface B
{
public String getUUID();
}
实现两个接口的类:
public class MyBean implements A, B
{
@Override
public String getUUID()
{
return UUID.randomUUID().toString();
}
}
编译MyBean
时出现警告:
javac -Xlint:deprecation MyBean.java A.java B.java
MyBean.java:8: warning: [deprecation] getUUID() in A has been deprecated
public String getUUID()
^
1 warning
我无法理解为什么在实施定义非弃用方法的B
时需要此警告......
答案 0 :(得分:3)
你已经回答了你的问题。
您收到警告是因为您执行implement A
,其中包含@Deprecated
注释。见here:
@Deprecated注释表示标记的元素 已弃用,不应再使用。编译器生成一个 程序使用方法,类或字段时的警告 @Deprecated annotation。
我没有看到这个警告有什么问题。它应该存在,因为您实际上正在实现一个不推荐使用的方法,该方法可以在您正在实施的其中一个接口中找到。
答案 1 :(得分:0)
您提供的实现满足两个接口,因此适用于其中任何一个的任何内容也适用于实现。没有理由将B选为唯一适用的。如果你不想要A,请不要实现它。