java 泛型转换_Java泛型并转换为基本类型

本文探讨了在Java中如何使用泛型,并针对如何将泛型数据转换为基本类型的疑问提供了解决方案。通过实现特定接口,如IntegerConvert,可以确保在泛型列表中存储的对象能够正确转换为所需类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我目前正在尝试学习如何使用一本书中的泛型.在本章中,它说要获取一段数据T并将其转换为整数.我在Eclipse中尝试不同的东西,但似乎没有人允许这样做.你怎么能执行以下任务:

LinkedList arr = new LinkedList();

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.本书坚持保持方法通用,以防使用浮点数或双精度数而不是字符串或整数.

编辑:对于可能有类似问题的其他人.从对这个问题的所有评论和接受的答案中收集到:

对数据使用.toString(),然后根据需要解析它需要的数据类型.

解决方法:

嗯,这是一本奇怪的书.我会试着根据我的知识告诉你它的要点.

泛型是一种构造,允许您编译时检查您尝试在特定集合,方法或类中使用的类型是否实际上知道该特定事物运行所必需的功能.

例如,您需要使用模板中名为SearchParameter的界面确定的函数,但只能看到< T>.参数作为对象.或者在你的情况下一个更好的例子是一个名为IntegerConvert的自定义接口,如下所示:

public interface IntegerConvert

{

Integer returnAsInteger();

}

你可以有这样一个类:

public class MyData implements IntegerConvert

{

private String data;

public MyData(String data)

{

this.data = data;

}

@Override

public Integer returnAsInteger()

{

return Integer.parseInt(data); //throws ParseException if it doesn't work

}

}

然后你可以得到这样的列表:

List listOfConvertibles = new ArrayList();

或者如果你想在未来更加通用,

List extends IntegerConvert> listOfConvertibles = new ArrayList();

然后你就可以做到

listOfConvertibles.add("25");

listOfConvertibles.add("40");

listOfConvertibles.add("35");

for(IntegerConvert ic : listOfConvertibles)

{

System.out.println("" + ic.returnAsInteger());

}

虽然这是一个过于复杂的例子,但我想.一个更简单的例子如下:

public class Node

{

private E data;

public Node(E e)

{

this.data = e;

}

public E getData()

{

return data;

}

public void setData(E e)

{

data = e;

}

public void print()

{

System.out.println(data.toString());

}

}

public class MyClass

{

public void doSomething()

{

List> listOfFloatNodes = new ArrayList>();

listOfFloatNodes.add(new Node(new Float(8.7472742f)));

listOfFloatNodes.add(new Node(new Float(5.56842742f)));

listOfFloatNodes.add(new Node(new Float(6.5467742f)));

MyOtherClass moc = new MyOtherClass();

moc.useNodeList(listOfFloatNodes);

}

}

public class MyOtherClass

{

public void useNodeList(List> list)

{

for(Node node : list)

{

printNode(node);

}

}

public void printNode(Node node)

{

node.print();

}

}

public class MainClass

{

public static void main(String[] args)

{

MyClass myClass = new MyClass();

myClass.doSomething();

}

}

如果您有任何问题,请发表评论.

标签:java,casting,generics

来源: https://codeday.me/bug/20190926/1819815.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值