gpt4 book ai didi

java - Java 中的递归泛型

转载 作者:行者123 更新时间:2023-11-30 06:28:12 24 4
gpt4 key购买 nike

我正在尝试实现一个表示 XML 树的类,如下所示:

    public class XML<T extends XML<T>> {

private final List<MarkupLanguage> nodeList = new ArrayList<>();

private final Map<String, String> attributeList = new HashMap<>();

public T attr(final String key, final String value) {
if (value != null) {
this.attributeList.put(key, value);
}
return (T) this;
}

public T appendTo(final T node) {
node.add(this);
return (T) this;
}
...
}

我的问题是输入这些子句 - 我正在为“return (T) this;”进行未经检查的转换

还有当我尝试单独使用 XML 类时:

    final XML url = new XML("url");
new XML("loc")
.add("http://goout.cz")
.appendTo(url);

我得到:

    Unchecked cast to call appendTo(T) as a member of raw type XML.

如何改进我的代码以获得更好的打字效果?

最佳答案

只需输入:

final XML<T> url = new XML<T>("url");
new XML<T>("loc")
.add("http://goout.cz")
.appendTo(url);

看起来你真的很想用 XML<T>对于你的方法,不是 T ,所以你可以避免强制转换(但我可能是错的):

public XML<T> attr(String key, String value) {
if (value != null) {
this.attributeList.put(key, value);
}
return this;
}

public XML<T> appendTo(XML<T> node) {
node.add(this);
return this;
}

关于java - Java 中的递归泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12868881/

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