这个包含内部类的变量有什么可行的?

And*_*ili 2 java oop inner-classes

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

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);
    }
};
Run Code Online (Sandbox Code Playgroud)

我的问题是,我无法理解这行代码的不尽相同之处:

putValue(Action.NAME, _("log-out"));
Run Code Online (Sandbox Code Playgroud)

有人能帮帮我吗?

cod*_*Man 5

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

_("log-out")
Run Code Online (Sandbox Code Playgroud)

是一个函数调用函数名为...像这样:

_(String arg1) // having _ as a function name is terribly a bad practice btw.
Run Code Online (Sandbox Code Playgroud)

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