作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一个表示 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/
我是一名优秀的程序员,十分优秀!