gpt4 book ai didi

java - 这段java代码是什么意思

转载 作者:行者123 更新时间:2023-12-03 00:21:31 29 4
gpt4 key购买 nike

我遇到了以下代码并且有点困惑。

LocalConfig conf = new LocalConfig() {
@Override
public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
return new AppConfigurationEntry[] {
new AppConfigurationEntry(moduleName(),
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
put("principal", RPCConstants.DOMAINUSER).
put("useTicketCache","true").
build())
};
}
};

LocalConfig conf = new LocalConfig()后面有一个代码块没有分号..自 LocalConfig使用 new 调用我不确定 LocalConfig 之后如何阻止此 block 由编译器处理。欣赏见解。

最佳答案

这是一个匿名类。 LocalConfig 可能是一个需要实现 public AppConfigurationEntry[] getAppConfigurationEntry(String name) 的接口(interface)。这只是创建接口(interface)的临时实现的一种快捷方式。通常的方法是创建一个驻留在其自己的 .java 文件中的具体实现。

在这里,您提供一个临时实现,然后将其分配给变量 conf

例如,假设您有一个界面:

public interface MyInterface {
int foo(String bar);
}

通常,您会创建一个实现(特别是如果您希望这个具体实现具有大量逻辑并被大量重用):

public class MyInterfaceImplementation implements MyInterface {

@Override
public int foo(String bar) {
...
return someIntVar;
}
}

然后您可以使用MyInterface myInterface = new MyInterfaceImplementation(); 实例化它。您可以创建一个临时实现,如下所示:

MyInterface myInterface = new MyInterface() {
@Override
public int foo(String bar) {
...
return someIntVar;
}
}

有些人避免使用所有匿名类。我认为这取决于用户案例。如果接口(interface)很简单(如事件处理程序)并且不太可能被重用,那么我认为内部类就可以了。

关于java - 这段java代码是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942126/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com