このコードでは:
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");
}