【问题标题】:Java convert object to Class how?Java如何将对象转换为类?
【发布时间】:2010-11-22 11:29:54
【问题描述】:

我的代码是:

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

解决办法是什么?

【问题讨论】:

  • 我可以推荐使用 Java 的国际化支持吗? download.oracle.com/javase/tutorial/i18n/index.html
  • 你应该编辑:'mylang.x 然后我得到:“x 无法解析或不是归档”'它不是代码
  • 仅供参考。 “I”这个词在英语中总是大写,而不是“i”。这样的事情看起来你没有在问题上付出任何努力,因此,随着时间的推移,可能会影响你是否得到好的答案。在这种情况下,我已经为您解决了(以及 Fgblanch 抱怨的问题)。

标签: java typeconverter


【解决方案1】:

这不是面向对象编程的工作方式。

如果您想要LangEng(不是Java 中标准命名约定使用CamelCase,而不是下划线分隔),那么您必须使用new LangEng() 对其进行实例化。但即使这样,您也无法访问x

在这种情况下,您可以做的是使用方法getX() 定义一个接口,并让两种语言都实现它。然后你可以有Language mylang

更重要的是 - 将这种方法用于 i18n 并不是一个好主意。更好用java.util.ResourceBundle

【讨论】:

  • 在这种情况下,您可以做的是使用方法 getX() 定义一个接口,并让两种语言都实现它。然后你就可以拥有语言 mylang。 -> 你能举个例子吗?
  • @lacas 正如我所说,将其用于 i18n 并不是一个好的选择。至于接口和东西——我建议你阅读一些关于 OOP 和 Java 的文章。这是基本的东西,没有它你就无法继续。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2023-03-17
    • 2014-09-23
    • 1970-01-01
    • 2021-01-12
    相关资源
    最近更新 更多