Çözüldü Java "cannot find symbol" hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Clf

Decapat
Katılım
10 Ağustos 2021
Mesajlar
41
Çözümler
1
Merhabalar,
Yarattığımız herhangi bir classa ait değişkenleri başka bir class da parametre olarak nasıl alıyoruz?
Mesela A classında B, C ve D objesi oluşturun diyor ya o objeleri kullanığımız constructorı başka bir classta( class E) çağırırken hata(cannot find symbol) alıyorum.
 
Çözüm
Bazı dillerdeki gibi parametre adını belirtip o parametreyi Java'da giremiyoruz maalesef. Sırasıyla yazmak gerekiyor:
Java:
public class Order { //ilk class
    public User u1;
    public Product p1;
    public CreditCard c1;

    public Order(User u1, Product p1, CreditCard c1)
        this.u1 = u1;
        this.p1 = p1;
        this.c1 = c1;
    } //User, Product, CreditCard ayrı classlar
}

public class User{ //2. class
    psvm {
        User user = new User();
        Product product = new Product();
        CreditCard cc = new CreditCard();
        Order o = new Order(user, product, cc); // Hatayı aldığım yer!
    }
}
A classının nesnesini (instance) oluşturman gerek. A aObject = new A(); şeklinde oluşturup ardından Object bObject = aObject.B; (field ise) kullanarak objeyi çekebilirsin. Static ve instance farklarına bakmanı öneririm her erişmek istediğin şeye static yazamazsın.
 
Yanlış veya eksik anlattım olayı galiba:

public class Order { //ilk class
public static User u1;
public static Product p1;
public static CreditCard c1;

public Order(User u1, Product p1, CreditCard c1)
this.u1 = u1;
this.p1 = p1;
this.c1 = c1;
} //User, Product, CreditCard ayrı classlar

public class User{ //2. class
psvm{
Order o= new Order(asdasd,asdasd,asdasd); // Hatayı aldığım yer!
}}
@bertek41 @FDDeathWing
 
Son düzenleme:
Order classındaki fielddaki staticleri kaldırabilirsin. Eğer User classıyla Order classı ayrı packagelerdeyse import etmen gerekiyor. Eğer aynı packagedeyseler new Order(...) kısmında 3 noktaya girdiğin parametrelerin doğru obje türünden olduğundan emin ol.
 
Order classındaki fielddaki staticleri kaldırabilirsin. Eğer User classıyla Order classı ayrı packagelerdeyse import etmen gerekiyor. Eğer aynı packagedeyseler new Order(...) kısmında 3 noktaya girdiğin parametrelerin doğru obje türünden olduğundan emin ol.
Aynı packagelerde. Sıkıntı şu zaten obje türünü nasıl belirleyeceğim onu soruyorum aslında? Mesela String olsa [Order o= new Order("asd","asd","asd")] derdik veya int olsa sayı yazardık ama bizim yarattığımız classa ait olduğunu belirten belirteç nedir?
 
Bazı dillerdeki gibi parametre adını belirtip o parametreyi Java'da giremiyoruz maalesef. Sırasıyla yazmak gerekiyor:
Java:
public class Order { //ilk class
    public User u1;
    public Product p1;
    public CreditCard c1;

    public Order(User u1, Product p1, CreditCard c1)
        this.u1 = u1;
        this.p1 = p1;
        this.c1 = c1;
    } //User, Product, CreditCard ayrı classlar
}

public class User{ //2. class
    psvm {
        User user = new User();
        Product product = new Product();
        CreditCard cc = new CreditCard();
        Order o = new Order(user, product, cc); // Hatayı aldığım yer!
    }
}
 
Çözüm
Bazı dillerdeki gibi parametre adını belirtip o parametreyi Java'da giremiyoruz maalesef. Sırasıyla yazmak gerekiyor:
Java:
public class Order { //ilk class
    public User u1;
    public Product p1;
    public CreditCard c1;

    public Order(User u1, Product p1, CreditCard c1)
        this.u1 = u1;
        this.p1 = p1;
        this.c1 = c1;
    } //User, Product, CreditCard ayrı classlar
}

public class User{ //2. class
    psvm {
        User user = new User();
        Product product = new Product();
        CreditCard cc = new CreditCard();
        Order o = new Order(user, product, cc); // Hatayı aldığım yer!
    }
}
Tam aynı anda ben de buldum çözümü sağol yardımın için, çözüm işaretlemiyorum henüz. Sen yetkili bir abiye benziyorsun başka sorum da olabilir çünkü :)
 

Yeni konular

Geri
Yukarı