[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