Point
クラスを定義しました:
public class Point {
...
public String toString() {
return "abc";
}
}
toString()
誰もそのメソッドをオーバーライドしないように注意する必要がある側面と同様に:
declare error
: execution(public String Point+.toString()) && !execution(public String Point.toString())
: "Forbidden execution operation!";
declare error
: call(public String Point+.toString()) && !call(public String Point.toString())
: "Forbidden call operation!";
ただし、次のコードを入力しても、エラーのフラグはまったく立てられません。
class Point4 extends Point {
public Point4(int x, int y) {
super(x, y);
}
@Override
public String toString() { //I'd be expecing a compilation error here.
return super.toString();
}
}
public class Main {
public static void main(String[] args) {
Point4 p = new Point4(2, 3);
System.out.println(p.toString()); //I'd be expecting a compilation error here
}
}
私は何を間違っていますか?
ありがとう