gpt4 book ai didi

java - Java中如何拥有动态数据类型的变量?

转载 作者:行者123 更新时间:2023-12-01 16:04:38 25 4
gpt4 key购买 nike

我需要一个UserProfile类,这就是用户配置文件。该用户个人资料当然包含一些重要的用户数据,但它还需要包含用户 friend 发送的消息列表。

我需要将这些消息保存在LinkedList中, ArrayList , HashMapTreeMap 。但一次只能发送一条消息,并且不会为每个数据结构复制消息。基本上,类似于动态变量类型,我可以在其中选择消息的数据类型。

这在 Java 中可能吗?或者我最好的方法是 like this ?我的意思是,有 2 个不同的类(用于用户配置文件),我在其中将消息托管为 Map<K,V> (然后我在适当的地方使用 HashMapTreeMap )以及另一个类,我将它们托管为 List<E> (然后我在适当的地方使用 LinkedListArrayList )。并且可能使用 UserProfile 的父类(super class)所以我不必为数据、年龄、地址等字段重复变量和方法...

有什么想法吗?

最佳答案

首先,您不会通过同时将消息添加到不同的集合来复制消息 - 您只存储对同一对象的不同引用。 (好吧,除非消息被表示为像 long 这样的原始类型......但无论如何它们都不能添加到集合中。)

为什么不能在同一个用户配置文件中拥有所有这些集合?这将允许您通过键或索引访问消息,并以您喜欢的任何方式迭代它们。

一个LinkedHashMap对您来说可能也是一个有趣的选择,因为它保证了迭代顺序,因此在某种程度上它的行为类似于关于迭代的列表,同时仍然是一个映射。最终,它归结为您希望如何访问给定用户的消息,但您尚未详细说明。

更新: @Snake,您只能存储对 Java 集合中对象的引用。因此,原始 long 值无法直接存储,只能先转换为 Long 对象。请注意,从 Java5 开始,由于自动装箱,此转换可能是隐式的,因此您在代码中看不到它,但它仍然会发生 - 例如

List<Long> list = new ArrayList<Long>();
list.add(1L); // the primitive value is boxed into a Long object,
// which is then added to the list
long value = list.get(0); // the value of the Long object in the list is outboxed
// and assigned to the primitive variable

关于java - Java中如何拥有动态数据类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2882082/

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