在这段代码中:
public class MyClass {
private Object innerValue;
public Object getInnerValue() {
return this.innerValue;
}
public void setInnerValue(Object innerValue) {
this.innerValue = innerValue;
}
}
public class MyClassReadOnly extends MyClass {
MyClassReadOnly(MyClass cls) {
// Make a field by field copy
super.setInnerValue(cls.getInnerValue());
}
public void setInnerValue(Object innerValue) {
throw new UnsupportedOperationException(
"This is a read-only instance"
);
}
}
编译器正确地抱怨MyClassReadOnly.setInnerValue()中未使用的参数(从不读取) innerValue。
我不想禁用这种警告,因为它通常非常有用,我也不希望有任何警告以具有高信噪比。
我不能将@SuppressWarnings()构造用作另一个建议的问题,因为它仅适用于 Java 1.4。
我想过插入这样的虚拟代码,但不是很令人满意:
public void setInnerValue(Object innerValue) {
if (innerValue != null) { /* Do Nothing, but keep the compiler happy */ }
throw new UnsupportedOperationException("This is a read-only instance");
}