2010-11-22 17 views
0

Benim kodudur: çözümdür NeJava nesneyi Class'a nasıl dönüştürür?

"x bir alan çözülmesi ya da değil olamaz": Ne mylang.x başvuruda zaman

public static Object mylang; 

public static class lang_eng { 
     public static final String x="Refreshing..."; 
} 
public static class lang_de { 
     public static final String x="Refreshing..."; 
} 

...

if (LANG.equals("1")) { 
     mylang=(lang_eng)new Object(); 
    } else { 
     mylang=(lang_de)new Object(); 
    } 

ama ben almak bunun için?

+6

Ben Java'nın uluslararası destek kullanılmasını öneriyoruz miyim? http://download.oracle.com/javase/tutorial/i18n/index.html –

+0

Düzenlemelisiniz: 'mylang.x sonra olsun:' x çözülemez veya dosyalanan bir '' bu – Fgblanch

+0

FYI kod değil. "Ben" sözcüğü her zaman İngilizce’dir, asla "i" değildir. Bunun gibi şeyler, soruna hiç çaba sarf etmediğiniz gibi görünür ve zamanla, iyi yanıtlar alıp almayacağınızı etkileme olasılığı yüksektir. Bu durumda sizin için (ve Fgblanch'ın şikayet ettiği şey) sizin için hallettim. –

cevap

7

Nesne yönelimli programlamanın yolu bu değil.

LangEng1 (Java'da standart adlandırma kuralı CamelCase'i değil, underscore_separation kullanır) istemiyorsanız, new LangEng()'u kullanarak bunu başlatmanız gerekir. Ancak bu şekilde bile x'a erişemezsiniz.

Bu durumda yapmanız gereken, getX() yöntemiyle bir arabirim tanımlamak ve her iki dil de bunu uygulamaktır. Sonra Language mylang olabilir.

Dahası - bu yaklaşımı i18n için kullanmak iyi bir fikir değildir. Daha iyisi T.J. olarak, java.util.ResourceBundle

+0

Bu durumda neler yapabileceğiniz, getX() yöntemiyle bir arabirim tanımlamak ve her iki dil de bunu uygulamaktır. O zaman Dil mihrabını alabilirsin. -> Bir örnek gösterebilir misin lütfen? – lacas

+0

@lacas dediğim gibi, bu i18n için kullanmak için iyi bir seçim değildir. Arayüzler ve diğer şeyler için - OOP ve Java ile ilgili bazı makaleleri okumanızı tavsiye ederim. Bu temel şeyler ve sen onsuz devam edemezsin. – Bozho

+0

tamam, teşekkürler – lacas

0

kullanın. Crowder içselleştirme desteğini kullanacağımı söyledi.

Ama sadece durumda

kod gibi olmalıdır bazı ekstra işlevsellik gerekir:

public static Object mylang; 

if (LANG.equals("1")) { 
    mylang=new lang_eng(); 
} else { 
    mylang=new lang_de(); 
} 

Ve bunu kullanmak istediğinizde:

if(mylang instanceof lang_eng){ 
    lang_eng langTemp = (lang_eng)mylang; 
    System.out.println(langTemp.x()); 
} 

if(mylang instanceof lang_de){ 
    lang_de langTemp = (lang_de)mylang; 
    System.out.println(langTemp.x()); 
} 
İlgili konular