gpt4 book ai didi

java - 使用空检查还是更喜欢空方法?

转载 作者:行者123 更新时间:2023-11-29 03:27:09 25 4
gpt4 key购买 nike

<分区>

场景

我想提供一种可能性,以可选在我的工作类中添加回调。这种回调的接口(interface)可能看起来像这样:

public interface Callback<T> {

void callback(final T data);

}

因为回调是可选的,所以每次调用之前我都需要检查是否在工作类中设置了回调:

public void doWork(final T data) {
if (callback != null) {
callback.callback(data);
}

// do the actual work
}

想法

所以我想知道有一个无操作回调是不是一个好主意,它看起来像这样:

@SuppressWarnings("rawtypes")
public class NopCallback implements Callback {

public static final NopCallback CALLBACK = new NopCallback();

@Override
public void callback(final Object data) {
// do nothing
}

}

默认情况下,worker 会将其回调设置为此 NopCallback:

@SuppressWarnings("unchecked")
public Worker() {
callback = NopCallback.CALLBACK;
}

真题

我已经发现 Nop 变体似乎表现更好(通过调用 doWork(...) 几千次并测量每个变体的持续时间)。我不太满意的是 @SuppressWarnings 的需要。我知道我可以摆脱它们,但我需要在我的每个工作类中有一个自己的 NopCallback 实例。

长话短说,从干净的代码可读性性能等方面来说,使用这种无操作回调是个好主意吗. 或者还有其他(优雅的)替代方案吗?

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