メソッドのオーバーライドと非表示のチュートリアルを読みました。そしてそれから、私は以下を集めました:
サブクラスがスーパークラスのクラスメソッドと同じシグネチャを持つクラスメソッドを定義する場合、サブクラスのメソッドはスーパークラスのメソッドを非表示にします。
そのため、私は次のことを行いました。
import javax.swing.JTextArea;
public final class JWrappedLabel extends JTextArea{
private static final long serialVersionUID = -844167470113830283L;
public JWrappedLabel(final String text){
super(text);
setOpaque(false);
setEditable(false);
setLineWrap(true);
setWrapStyleWord(true);
}
@Override
public void append(final String s){
throw new UnsupportedOperationException();
}
}
このデザインについて私が気に入らないのは、それappend
がまだサブクラスの目に見えるメソッドであるということです。を投げる代わりにUnsupportedOperationException
、私は体を空のままにしておくことができました。しかし、どちらも醜い感じがします。
そうは言っても、スーパークラスのメソッドを隠すためのより良いアプローチはありますか?