泛型或对象投射?

时间:2014-09-30 18:32:57

标签: java

考虑这种情况: 我的目标是建立一个小的元数据框架。我有一个包含数据对的元数据存储。

每对数据由一个键(String类型)和一个值(类型MetaValue)组成。

MetaValue类将保存可以调用的单个数据(不仅仅是String)。它必须主要是高性能的,因为它将用于多人游戏的服务器实现。

我应该将数据(在MetaValue类中)保存为Object类型的对象,然后将其转换为我需要的任何内容(如int,boolean,String,...),还是应该使用返回的泛型原始数据类型的数据形式?

我想知道哪些是最高效的。数据不是复杂的自制类的对象。它纯粹是为了元数据。例如:一个怪物的HP。武器的攻击率,......

1 个答案:

答案 0 :(得分:2)

如果数据的值可以是任何类型,则泛型中没有值,这会将数据类型限制为特定的类或类层次结构。使用Object作为数据类型,并根据需要转换从元数据对象中提取的数据。

请注意您提取的内容是您期望的数据类型,否则可能会导致ClassCastException

与使用泛型相比,这不仅仅具有同等性能,因为在使用泛型时,无论如何都会使用Integer hp = metadata.get("monsterHP");等方法对泛型类型进行隐式强制转换。