我的代码是:
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();
}
但是当我引用mylang.x
时,我得到:“x无法解析或不是字段”
这是什么解决方案?
答案 0 :(得分:7)
这不是面向对象编程的工作方式。
如果你想要LangEng
(不是在Java中,标准命名约定使用CamelCase,而不是undercore_separation),那么你必须使用new LangEng()
来实例化它。但即便如此,您也无法访问x
。
在这种情况下,你可以做的是定义一个方法getX()
的接口,并让两种语言实现它。然后你可以Language mylang
。
更重要的是 - 将此方法用于i18n并不是一个好主意。更好地使用java.util.ResourceBundle
答案 1 :(得分:0)
作为T.J.克劳德说我会使用内部化支持。
但是,如果您需要一些额外的功能,代码应该是:
public static Object mylang;
if (LANG.equals("1")) {
mylang=new lang_eng();
} else {
mylang=new lang_de();
}
当你想要使用它时:
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());
}