泛型与原始对象相结合

Chr*_*ips 1 java generics primitive-types data-structures

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

  • 我的第一个想法是将每个包装int成一个object<T>,然后将其输入.
  • 这是一个干净的解决方案,还是有更多的最佳实践方法?

谢谢.

答案,@ dasblinkenlight提供:

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

编辑:修改标题以获得更准确的参考.

das*_*ght 6

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

你不必 - 那java.lang.Integer是为了什么.所有其他原始类型的Java都存在类似的包装类型.

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

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

在不可能的情况,这种做法是不是足够快,你将需要建立特殊班级的每个基本类型,并以类似于Java的采取对流的原语的方式(IntStream,LongStream,DoubleStream等)

  • @ChrisPhillips对,Java团队优化了这些包装类,甚至在编译器/ JVM中构建了特殊的技巧,以确保它们的性能尽可能好地用于包装类. (2认同)