1. ホーム
  2. java

[解決済み] type testのenclosingインスタンスにアクセスできない。単純なテストプログラム上の型式テストエラーの包含するインスタンスで割り当てを修飾する必要があります。

2022-02-09 22:42:01

質問内容

No enclosing instance of type test is accessibleと表示されました。を使用して、型テストの包含するインスタンスでアロケーションを修飾する必要があります。 Location ob1 = new Location(10.0, 20.0); なぜなんだろう...

package pkg;

public class test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Location ob1 = new Location(10.0, 20.0);
        Location ob2 = new Location(5.0, 30.0);
        ob1.show();
        ob2.show();
        ob1 = ob1.plus(ob2);
        ob1.show();
        return;
    }

    public class Location // an ADT
    {
        private double longitude, latitude;

        public Location(double lg, double lt) {
            longitude = lg;
            latitude = lt;
        }

        public void show() {
            System.out.println(longitude + " " + latitude);
        }

        public Location plus(Location op2) {
            Location temp = new Location(0.0, 0.0);
            temp.longitude = op2.longitude + this.longitude;
            temp.latitude = op2.latitude + this.latitude;
            return temp;
        }
    }
}

解決方法は?

2つのファイルに分割することを検討してください。あなたの意図は、ネストしたクラスを作ることではなく、テスタークラスがコアクラスを呼び出すことだと思われます。

ファイル #1: Test.java

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Location ob1 = new Location(10.0, 20.0);
        Location ob2 = new Location(5.0, 30.0);
        ob1.show();
        ob2.show();
        ob1 = ob1.plus(ob2);
        ob1.show();
        return;
    }
 }

ファイル番号2:Location.java

public class Location // an ADT
{
    private double longitude, latitude;

    public Location(double lg, double lt) {
        longitude = lg;
        latitude = lt;
    }

    public void show() {
        System.out.println(longitude + " " + latitude);
    }

    public Location plus(Location op2) {
        Location temp = new Location(0.0, 0.0);
        temp.longitude = op2.longitude + this.longitude;
        temp.latitude = op2.latitude + this.latitude;
        return temp;
    }
}

1つのJavaファイル内で複数のクラスが定義されている場合、それらの間に依存関係が生じるため、"enclosing instance of type"のエラーが発生します。あなたのコードでは テスト が囲んでいるのは 所在地 . これらは ネストされたクラス このような書き方をする特別な理由がない限り、1ファイル1クラス方式を貫くのがベストです。