2012-03-06 20 views
8

türünde kapalı bir örnekle ayrıştırmaya hak kazanmalıyım. Sınıfımda "genel sınıf pcb" olarak bildirildiğimde, şu kurucuya sahibim: genel pcb (int p, int a, int b). public void main (String [] args) olarakfbMain türünde kapalı bir örnek bulunmamaktadır. FbMain

Ben bir dizide farklı bir pozisyona bir "pcb" add döngü için kurucusunu çağırmak deneyin. İşte son satırın nerede olduğunu anladığım döngü şöyledir:

for(int i=0; i<numJob; i++){ 
    pI = scan.nextInt(); 
    arr = scan.nextInt(); 
    bst = scan.nextInt(); 
    notHere[i]=new pcb(pI, arr, bst); 
} 

Neyi yanlış yapıyorum? Sözdizimi mi, yoksa programımın yapısı mı? Java'yı o kadar fazla kullanmadım ve bence bu benim ana problemim.

+0

Bize "pcb" sınıfını göstermeyi unuttun. –

+0

Muhtemel kopyası [Java - Foo türünde kapalı örnek yok erişilebilir] (http://stackoverflow.com/questions/9560600/java-no-enclosing-instance-of-type-foo-is-accessible) – fabian

cevap

15

gibi sınıf bildirimi için static ekle, ancak hata pcbfbMain bir iç sınıfı olduğunu gösterir:

public class fbMain { 
    //... 
    public class pcb { 
    } 
    //... 
} 

Bu hatayı düzeltmek için pcb statik:

public static class pcb { 
} 

Veya sınıfı kendi dosyasına taşıyarak. (Bu fbMain örneği ile ilişkili olduğu için) pcb statik olamaz Ya da, sen fbMain bir örneğini ileterek yeni pcb oluşturabilirsiniz:

notHere[i] = instanceOfFbMain.new pcb(pI, arr, bst); 

İstediğin olasılıkla ilk. Ayrıca, sözleşmeye göre, Java tipi adların büyük harfle başladığını unutmayın.

3

Alakalı tüm kod vermediyseniz bu

public static class pcb... 
İlgili konular