2016-03-21 30 views
0

Bunu daha önce yaptığımdan eminim, bu yüzden neden bir hataya yol açtığından emin değilim. Bu hata alıyorum edilir:Java - Bir yöntem çağrısı içinde bir nesne oluşturma

$ javac Zombie.java 
Zombie.java:51: error: non-static variable this cannot be referenced from a static context 
      array.add(new Point(p.d0-1, p.d1)); 
        ^

Ben yeni bir nesne tanımlamak nereye işaret, o yüzden statik bir şekilde bir yöntem çağrısı zaman içinde yapmanız izin yok? Bir değişken tanımlayıp onu iletmem gerekiyor mu? Bu doğru bir bağlama için ....

daha fazla zaman alır ve çok daha dağınık olurdu Çünkü:

  • dizi türü ArrayList olan
  • Nokta Ben tanımlanmış bir sınıftır. Kurucu doğru çağrılır.
  • p, Point örneğidir. İki alanı vardır: d0 ve d1 (X ve Y ile karışıklığı hafifletmek için 0 ve boyut 1).
+2

"Point" yuvalanmış bir sınıf mıdır? Eğer öyleyse, beyannameye "statik" kelimesini ekleyin. –

+0

Bu kod satırında daha fazla bağlam olduğunu düşündüğümde burada görüyoruz. * Genel olarak * bir nesnenin örneğini bildirememenizin bir nedeni yoktur. – David

+0

Kodunuzu buraya gönderin – Ramanlfc

cevap

0

Yuvalanmamış sınıflar, iç içe geçmemiş sınıf içinde statik bir bağlamda kullanılıyorsa hem genel hem de statik olarak bildirmeniz gerekir. Bunu yaptım ve artık bu hatayı aldım.

+2

Statik olmayan bir iç sınıfın kendi kapsayıcı türünün bir örneğini gerektirdiğini anlamak için zaman ayırmalısınız. Bunun nedeni, iç sınıfın örnek alanlara ve kapsanan türün yöntemlerine örtük erişimi olmasıdır. Statik iç sınıflar, bu örnek alanlara ve üyelere örtük olarak erişemez, bu nedenle örnek gerekmez. –

İlgili konular