【发布时间】:2014-07-04 12:34:57
【问题描述】:
我目前正在尝试从一本书中学习如何使用泛型。在本章中,它说取一段数据 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。本书坚持保持方法通用,以防使用浮点数或双精度数而不是字符串或整数。
编辑:对于可能有类似问题的其他人。从所有 cmets 收集到这个问题和被接受的答案:
对数据使用 .toString(),然后根据需要将其解析为所需的任何数据类型。
【问题讨论】:
-
您正在寻找的东西称为“通用约束”。例如
<T implements IntegerConvertible> -
Node 来自哪里?数据是如何定义的? T 有界吗?
-
该节点本身在本文中没有定义,但它被描述为“具有带有 Node
的通用列表”。所以,在我有限的理解中,这个节点实际上可以是任何东西。 -
那么唯一的方法是使用
instanceof-operator 来检查泛型是否实现IntegerConvertible或扩展String或类似的,如果是则转换它并按照逻辑执行并抛出一个@ 987654329@如果没有。 -
您的第一个(也是唯一一个)问题是什么“任务”?这完全脱离了任何可能表明本书含义的上下文。这两行
Linked ... 13");在这种组合中没有意义。