Java将对象转换为Class如何?

时间:2010-11-22 11:29:55

标签: java typeconverter

我的代码是:

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无法解析或不是字段”

这是什么解决方案?

2 个答案:

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