[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 1668] jlint でマルチス レッド関係の検証
高橋(徹)です。
先日の読書会で少し話題にしたjlintについて、簡単なサンプルを
作ってかけてみると、こんな警告を得られました。
サンプル
2つのクラスSuper, Childからなり、ChildはSuperのsynchronizedメソッドを
synchronizedをつけずにオーバーライドする。
public class Super {
protected double x;
protected double y;
public Super(double aX, double aY) {
x = aX;
y = aY;
}
synchronized void move(double dx, double dy) {
x += dx;
y += dy;
}
}
public class Child extends Super {
public Child(double aX, double aY) {
super(aX, aY);
}
void move(double dx, double dy) {
x += dx;
y += dy;
}
}
jlintを実行したときに得られたメッセージ
ex2$ jlint +all .
Child.java:1: Component 'y' in class 'Child' shadows one in base class 'Super'
Child.java:2: Component 'x' in class 'Child' shadows one in base class 'Super'
Child.java:7: Synchronized method Super.move(double, double) is overridden by non-synchronized method of derived class 'Child'
Verification completed: 3 reported messages
3つめに、同期メソッドを非同期メソッドでオーバーライドしたことが
レポートされます。
jlintのあるホームページ
http://www.ispras.ru/~knizhnik/
---
TAKAHASHI, Toru