gpt4 book ai didi

java - 使用 'new' 而不使用 'xyz = new abc'

转载 作者:搜寻专家 更新时间:2023-11-01 01:07:52 24 4
gpt4 key购买 nike

我有一个类如下:

package org.requiredinput.rpg1.desktop;

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import org.requiredinput.rpg1.Rpg1;

public class DesktopLauncher {
public static void main (String[] arg) {
LwjglApplicationConfiguration config =
new LwjglApplicationConfiguration();
config.title = "Awesome rpg";
config.width = 800;
config.height = 480;
new LwjglApplication(new Rpg1(), config);
}
}

我的问题是 - 在最后一行,使用了 new 语句,但前面没有 =。正在创建什么?一个新的 LwjglApplication 对象?上课?

为什么它不需要像 app = new LwjglApplication() 这样的实例化?

最佳答案

您的代码创建了一个新对象并且没有给它命名,这意味着它不能被 main() 之后使用。构造函数中的代码仍会运行,并且仍会创建 LwjglApplication 类型的对象。不过,main() 不会保留对它的引用。

这就像调用一个返回值但未将其分配给变量的函数:

int foo() {
System.out.println("Ron Paul 2016!");
return 42;
}

public static void main(String... args) {
foo(); // will print out "Ron Paul 2016!" (w/o quotes)
}

此处,foo() 的返回值未做任何处理,但 println() 调用仍将运行。

这通常在构造函数(在本例中为 LwjglApplication 的构造函数)具有有益的副作用时使用。在您的特定情况下,构造函数会弹出一个窗口。 (作为 RafazZ said ,您不需要访问正在构造的对象,因为有其他方法可以访问它,通过第三方供应商的 API 提供。)

正如 Drew Kennedy 在评论中提到的,这种模式也用于一次性元素。

假设您有一个如下所示的类:

class Foo {
void bar() {
// stuff that requires being in an instance, such as...
System.out.println(this.getClass());
}

public static void main(String... args) {
(new Foo()).bar();
}
}

请注意,该程序不会为新创建的 Foo 对象分配名称,因为它仅用于调用其 bar() 方法.

关于java - 使用 'new' 而不使用 'xyz = new abc',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27159172/

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