Java泛型和转换为基元类型
我目前正试图从一本书中学习如何使用泛型。在本章中,它说获取一段数据T并将其转换为整数。我在Eclipse中尝试了不同的事情,但他们似乎都不允许这样做。您如何执行以下任务:
LinkedList<T> arr = new LinkedList<T>();
Float fl = 8.74273123948;
arr.add(fl);
然后在另一节课上:
public int findValue(Node node)
{
T data = node.data;
int value = Number.valueOf(data);
return value;
}
我尝试过使用.valueOf()
和(int)
以及其他一些东西,但似乎没有什么东西能让Java满意。这本书坚持保持方法的通用性,以防使用浮点或double代替字符串或int
编辑:适用于可能有类似问题的其他人。从对该问题的所有评论和被接受的答案中收集到:
使用。然后根据需要将其解析为所需的数据类型
# 1 楼答案
尽管与主题密切相关,但回答不完全相关。我有个问题,没有找到答案。然后我找到了解决方案,并想与大家分享:
我试图将泛型值强制转换为基元类型:
长话短说:第一个版本不起作用,第二个版本起作用。挺烦人的
# 2 楼答案
嗯,那是一本奇怪的书。我会根据我所知道的告诉你它的要点
泛型是一种构造,它允许您在编译时检查您试图在特定集合、方法或类中使用的类型实际上是否知道该特定对象运行所需的功能
例如,您需要使用由模板中名为SearchParameter的接口确定的函数,但您只将
<T>
参数视为对象。或者,在您的情况下,更好的示例是一个名为IntegerConvert
的自定义接口,如下所示:你可以上这样的课:
然后你可以有一个这样的列表:
或者如果你想在将来更通用一点
然后你就可以做了
虽然这是一个有点过于复杂的例子,我想。下面是一个更简单的示例:
如果您有任何问题,请发表评论
# 3 楼答案
尝试观察以下示例:
其中节点为:
所有这些都是可能的,因为允许从已知类型到T的未经检查的强制转换(当然有警告),并且编译器相信您可以执行强制转换