2016-04-11 8 views
1
class SharedWorld { 
    def db = Db(sql) 

    def help = Help(db) 
} 

class Db { 
    Sql sql 

    Db(def sql) { 
     this.sql = sql 
    } 
} 

class Help { 
    Help(){} 
    Db db 

    Help(Db db) { 
     this.db = db 
    } 
} 

Bu yapıya sahip ve benim groovy derlemek nedense bunu Yardım için eşleşen yapıcısı bulamadığını bir hata alıyorum (Db). Herhangi bir fikir neden? İmza,Ben eşleşen bir yapıcısı ama imzalar maçı görmediklerine bir hata aldınız

+1

Sınıf tanımlarınız kötü görünüyor. Sınıf adından sonra neden parantezler var? – JChap

cevap

2

ile uyumludur. Kodunuzla ilgili birkaç sorunla karşılaşırsınız.

İlk olarak, sınıf bildirimleri, sınıf adından hemen sonra parametreler almaz veya parantezlere gerek duymaz. Kıvrık parantez içinde SharedWorld için bir kurucu oluşturmayı deneyin. Ayrıca, sınıfları oluşturmak için new anahtar sözcüğünü kullanmanız gerekir (kullandığınız sözdizimini desteklemek için ek açıklaması olsa da). Örnek:

class SharedWorld { 
    def db 
    def help 
    SharedWorld(sql) { 
     db = new Db(sql) 
     help = new Help(db) 
    } 
}