gpt4 book ai didi

java - 创建类的新实例的不同方法?

转载 作者:行者123 更新时间:2023-12-02 13:40:13 26 4
gpt4 key购买 nike

我知道有很多不同的方法来创建实例,其中我不知道很多,但我刚刚看到了这个一种定义。
我什至不确定它是否正在创建一个新的实例!!小误会,我消化不好。

谁能解释一下下面的代码?

new timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
...
}
}, 0, 1000);

上面的和下面的有什么区别吗?只要它们是一样的,你更喜欢哪一个?

Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
...
}
}, 0, 1000);

最佳答案

Is there any different with this one? As long as there are same, which one do you prefer?

首先,我想指出 @Carcigenicate 在评论中所说的内容。

" I wouldn't expect the first to compile, unless timer() is a constructor, in which case the two are the same."

我认为这是一个错误,您打算将 Timer() 编写为构造函数调用。

下面的代码创建了一个 Timer 类型的匿名对象,当您想立即执行某个任务但不希望使用 Timer 再次对象。基本上,您以后将无法在代码中再次重用该对象

new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
...
}
}, 0, 1000);

下面的代码与上面的代码等效,只是这不是一个匿名对象,并且我们可以稍后在代码中重用该对象

Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
...
}
}, 0, 1000);

As long as they're the same, which one do you prefer?

这实际上取决于环境和情况,但如果我要选择,我会选择第二个,原因我上面已经说过了。

关于java - 创建类的新实例的不同方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774580/

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