gpt4 book ai didi

java - 如何删除 Fluent 界面默认方法的未检查警告

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

我想知道是否有一种方法可以删除以下代码的未经检查的警告,从而提供返回自身的流畅 API。

public interface Taggable<T> {

/**
* Should return the underlying set that holds the tags.
*
* @return set
*/
Set<String> getTags();

@SuppressWarnings("unchecked")
default T tag(@NotNull String... tags) {
for (String tag : tags) {
getTags().add(tag);
}
return (T) this;
}

@SuppressWarnings("unchecked")
default T untag(@NotNull String tag) {
getTags().remove(tag);
return (T) this;
}

}

用法是

@Data
public class MyObject implements Taggable<MyObject> {
private Set<String> tags;
}

MyObject t = new MyObject()
.tag("abc")
.tag("def");

带有抑制警告的工作示例 https://repl.it/@trajano/fluent

最佳答案

public interface Taggable<T extends Taggable<T>>

然后改变

(T) this

this

所以:

default Taggable<T> tag(@NotNull String... tags) {
Collections.addAll(getTags(), tags);
return this;
}

这就是基类 Enum(对于所有枚举类)所做的事情。

流畅的 API(构建器模式)一般来说有点冗长。然而,优点是没有像 getTags 这样的工件。委托(delegate)给 tag/untag 接口(interface)实现似乎会更好。

关于java - 如何删除 Fluent 界面默认方法的未检查警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56773163/

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