gpt4 book ai didi

java - 为什么不用new关键字也能实例化Toast?

转载 作者:行者123 更新时间:2023-11-29 09:52:55 26 4
gpt4 key购买 nike

所以对于 Toast 类,显然可以这样写:

Toast toastMessage = Toast.makeText(this, "Hello", Toast.LENGTH_SHORT)
toastMessage.show();

为什么不使用 new 关键字就可以将 toastMessage 实例化并用作对象?

toastMessage如何通过方法实例化?

最佳答案

这里的Toast没有什么特别之处。您只是调用一个创建实例的静态方法(或者可能重用现有实例 - 这是一个实现细节)。这是一种随处可见的模式 - 例如,Calendar.getInstance()。有时您可以改为调用构造函数,有时您只能通过静态方法创建一个实例。

除非幕后有什么技巧,否则很可能某处在实现中会调用构造函数。这是一个简单的例子:

public final class CreateViaMethod {
private final String name;

private CreateViaMethod(String name) {
this.name = name;
}

public static CreateViaMethod newInstance(String name) {
return new CreateViaMethod(name);
}
}

API 设计者可能想要这样做的原因有很多。例如,可能有多个具有相同参数类型但名称不同的“创建”方法,例如

public static Duration fromSeconds(int seconds)
public static Duration fromMinutes(int minutes)
public static Duration fromHours(int hours)

...你不能在那里有三个重载的构造函数,但你可以给方法不同的名称。

关于java - 为什么不用new关键字也能实例化Toast?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30808748/

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