2010-11-22 6 views
0

Mein Code ist:Java konvertiert Objekt in Klasse wie?

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(); 
    } 

aber wenn ich mylang.x verweisen, die ich erhalten: "x kann nicht aufgelöst oder kein Feld"

Was ist die Lösung dafür?

+6

Kann ich empfehlen die Verwendung von Java Unterstützung der Internationalisierung? http://download.oracle.com/javase/tutorial/i18n/index.html –

+0

Sie sollten bearbeiten: 'Mylang.x dann bekomme ich: "x kann nicht gelöst werden oder nicht ein Feld"' es ist kein Code – Fgblanch

+0

FYI. Das Wort "I" wird immer in Englisch großgeschrieben, niemals "i". Dinge wie diese lassen es so aussehen, als hätten Sie sich nicht mit der Frage beschäftigt und werden sich im Laufe der Zeit wahrscheinlich auswirken, ob Sie gute Antworten bekommen. Ich habe es (und das, was Fgblanch beschwert hat) für dich in diesem Fall behoben. –

Antwort

7

So funktioniert die objektorientierte Programmierung nicht.

Wenn Sie LangEng wollen (nicht, dass in Java die Standard-Namenskonvention verwendet Camelcase, nicht underscore_separation), dann haben Sie es instanziieren, new LangEng() verwenden. Aber selbst auf diese Weise können Sie nicht auf x zugreifen.

In diesem Fall können Sie eine Schnittstelle mit einer Methode getX() definieren und beide Sprachen implementieren lassen. Dann können Sie Language mylang haben.

Was mehr ist - es ist keine gute Idee, diesen Ansatz für i18n zu verwenden. Bessere Verwendung java.util.ResourceBundle

+0

In diesem Fall können Sie eine Schnittstelle mit einer Methode getX() definieren und von beiden Sprachen implementieren lassen. Dann können Sie Sprache mylang haben. -> kannst du bitte ein Beispiel zeigen? – lacas

+0

@lacas wie gesagt, es ist keine gute Wahl, dies für i18n zu verwenden. Wie für die Schnittstellen und Sachen - ich würde vorschlagen, dass Sie einige Artikel über OOP und Java lesen. das ist Grundwissen und du kannst nicht ohne es weitergehen. – Bozho

+0

okay, danke – lacas

0

Als T.J. Crowder sagte, ich würde die Internalisierungsunterstützung nutzen.

Aber nur für den Fall, dass Sie einige zusätzliche Funktionen sollte der Code wie:

public static Object mylang; 

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

Und wenn Sie es verwenden möchten:

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()); 
} 
Verwandte Themen