【问题标题】:What exactly do this variable that contains an inner class?这个包含内部类的变量到底是做什么的?
【发布时间】:2013-11-12 14:05:08
【问题描述】:

我对这个包含内部类的变量有疑问:

private final Action actionLogOut = new AbstractAction() {
    {
        putValue(Action.NAME, _("log-out"));
    }

    @Override
    public void actionPerformed(ActionEvent e)
    {
        System.out.println("logOutButton clicked !!!");
        System.exit(0);
    }
};

我的问题是我无法理解这行代码到底是做什么的:

putValue(Action.NAME, _("log-out"));

有人可以帮助我吗?

【问题讨论】:

  • 那是谁干的????为什么将您的方法命名为_
  • _(String str) 可能是受到 C 代码的启发,其中人们经常使用 _ 函数或宏来为 i18n 翻译字符串。

标签: java oop inner-classes


【解决方案1】:

putValue() 是具有 2 个参数的方法,第一个参数似乎是某种常量,在 outerinner 类中定义(我假设这是因为它都是大写字母)和第二个参数

_("log-out")

是对名为...的函数的函数调用,如下所示:

_(String arg1) // having _ as a function name is terribly a bad practice btw.

因此putValue(Action.NAME, _("log-out")); 行中的_("log-out") 将替换为从名为_(String arg1) 的函数返回的值

【讨论】:

    【解决方案2】:

    我想下划线会引起你的注意。

    由于_ 是在方法名称中使用的有效字符,因此您的

    _("log-out")
    

    可能是调用了一些_(String s) 方法,在其他地方声明。

    哦,不要写这样命名的方法......

    【讨论】:

    • 我想是的,事实上我把它放到了一个 .properties 文件中,该文件位于我的项目中的一个包中,但我不明白这个类如何访问这个属性文件
    • @AndreaNobili 您应该提供更多信息,包括哪些文件以及其中的内容。
    猜你喜欢
    • 2012-03-30
    • 2014-01-29
    • 1970-01-01
    • 2015-01-23
    • 2021-09-18
    • 2013-02-08
    • 1970-01-01
    • 2012-03-07
    • 2014-04-04
    相关资源
    最近更新 更多