2016-04-05 21 views
0

ORMLite ile kullanacağım birkaç ORM sınıfım var. Hepsi bir statik alana (DAO) ve bir çift statik yönteme sahiptir. Böyle bir jenerik Süreklik bu üçünü taşımak istiyorum: Ben bir örnek yöntemine yöntemini değiştirirsenizGenel bir özellikten ORMLite ek açıklamaları bulunamıyor

trait ORM<K, V> { 

    private static Dao<K, V> dao = null 

    @Synchronized 
    static Dao getDao() { 
     dao = dao ?: DaoManager.createDao(DatabaseConnection.get(), K) 
    } 
} 

Bu yaklaşım,

java.lang.IllegalArgumentException: No fields have a DatabaseField annotation in class java.lang.Object 

Ancak aşağıdaki hatayı vererek işe yaramaz

trait ORM<K, V> { 

    private static Dao<K, V> dao = null 

    @Synchronized 
    Dao getDao() { 
     dao = dao ?: DaoManager.createDao(DatabaseConnection.get(), this.getClass()) 
    } 
} 

İyi çalışıyor, ancak örnek bir yöntem olması pek anlamlı değil.

Statik bir bağlamda nasıl çalışılacağı hakkında bir fikrin var mı?

cevap

0

Groovy, sınıfın kendisine başvurmak için this statik bağlamda kullanabilir. Bu (hiçbir amaçlanan) sorunu çözdü.

@Synchronized 
static Dao getDao() { 
    dao = dao ?: DaoManager.createDao(DatabaseConnection.get(), this) 
}