2010-11-19 13 views
0

xZx28 Çapraz platform için statik kaydedici, ör. Java (Applet) ve Android

MyLogger.e("MyApp","I have an error."); 
MyLogger.e("MyApp","I have an error."); 

, MyLogger'ın tüm projede kullanılabilir olması için statik olması gereken bir çapraz plattform projesinde.

Şöyle bir şey deniyordum:

MyAndroidLogger implements MyLogger { 
    public static void e(String strApp, String strErr) { 
    Log.e(strApp, strErr); 
} 

MyAppletLogger implements MyLogger { 
    private static Logger logger = Logger.getLogger(); 
    public static void e(String strApp, String strErr) { 
    logger.e(strApp, strErr); 
} 

Derleyici statik hakkında şikayet ediyor. Bunu nasıl yaparım? Bütün bunlar mümkün mü? Değilse, doğru yaklaşım nedir?

Şimdiden teşekkürler ...

+0

Bu aslında çözüm olabilir: http://java.dzone.com/articles/design-patterns-factory. – AudioDroid

+0

Veya bu: http://java.dzone.com/articles/design-patterns-abstract-factory. – AudioDroid

cevap

2

önceden

teşekkürler .... Sen aramak zorunda ya

MyAndroidLogger.e("MyApp","I have an error."); 

veya

MyAppletLogger.e("MyApp","I have an error."); 

Eğer doğru sınıfına bir referansı vardır bir yardımcı sınıf oluşturmak zorunda her iki platformda da aynı çağrıyı kullanmak isterseniz

:

MyLoggerHelper.e("MyApp","I have an error."); 
MyLoggerHelper ileri ilk iki o çağırmalıdır aramalar ve uygun birine bu çağrı hangi birini bilen bir sınıftır

.

+0

Tamam. Bunu daha yeni denedim. İşe yarıyor. Ona oy verdim. Bununla birlikte, "doğru cevap" ı seçmeden önce diğer çözüm (ler) i deneyelim. Ama ... çok teşekkür ederim! :-) – AudioDroid

+0

OscarRyz tarafından sağlanan tekil yanıt için gidin. Bu en iyi uygulama. – Juhani

+0

Tamam, seni duydum. Tekrar teşekkürler. – AudioDroid

2

Arabirimler statik yöntemler yoktur. Bu yüzden onları seslendiremezsin.

Sen a tek kullanarak deneyebilirsiniz.

YourWhateverLogger.getInstance().e("Hello"); 
+0

Tamam. Tekil desen içeren ve yukarıdaki aramayı mümkün kılacak bir çözüm bulmaya devam ediyorum. Ama bunun nasıl olacağını gerçekten anlamıyorum. Sadece bir tek sınıfın bir temel sınıf olarak (neredeyse) imkansız olduğunu ve tavsiye edilmediğini öğrenmek zorundaydım. Hayal edebileceğim tek şey, Juhani tarafından sağlanan çözüm ve "Helper" -ınıfını bir singleton yapmak. Eğer burada kastedilen şey değilse, biraz daha fazla ayrıntı almaktan mutluluk duyarım. Teşekkürler. – AudioDroid

İlgili konular