泛型与原始对象相结合

时间:2017-10-24 14:14:48

标签: java generics data-structures primitive-types

我正在编写一个小型的排序方法和数据结构库,我试图通过允许它们使用泛型类型来使我的类更加健壮,使用{{1} }。当我在一个充满类型<T extends Comparable<T>>的文本文件中阅读时,或者需要存储具有String方法的自定义类对象时,这非常有效。我不确定的是如何将此功能扩展到一个充满数字的文本文件,例如所有类型compareTo()。据我所知,int是一种原始类型,没有任何方法,包括int。这可以防止我的类能够接受类型compareTo()

  • 我的第一个想法是将每个int打包在int中,然后将其输入。
  • 这是一个干净的解决方案,还是有更多的最佳做法方法?

感谢。

答案,@ dasblinkenlight提供:

  • &#34; Java团队优化了这些包装类,甚至在编译器/ JVM中构建了特殊的技巧,以确保它们的性能尽可能好地用于包装类&#34;,因此创建自定义包装类没有任何好处,也不应该是方法。

修改:修改标题以获得更准确的参考。

1 个答案:

答案 0 :(得分:6)

  

我的第一个想法是将每个int包装在object<T>中,然后将其输入。

你不必 - 这就是java.lang.Integer的用途。所有其他原始类型的Java都存在类似的包装类型。

  

这是一个干净的解决方案,还是有更多的最佳实践方法?

这取决于您的性能要求。如果包装原语是可接受的(适用于大多数应用程序),那么你就有了一种工作方法。

在不太可能出现这种方法不够快的情况下,您需要为每种基本类型构建特殊类,其方式类似于Java对基元流的采用(IntStream,{{ 3}},LongStream等。)