泛型与原始 objects
Generics in conjunction with primitive objects
我正在编写一个小型个人排序方法和数据结构库,我正试图通过允许它们使用泛型类型来使我的 classes 更健壮,使用 <T extends Comparable<T>>
。当我阅读一个充满 String
类型的文本文件或需要存储具有 compareTo()
方法的自定义 class objects 时,这非常有效。我不确定的是如何将此功能扩展到一个充满数字的文本文件,例如所有类型 int
。在我的理解中,int
是一个原始类型,没有任何方法,包括compareTo()
。这会阻止我的 classes 能够接受类型 int
.
- 我的第一个想法是将每个
int
包裹在一个 object<T>
中,然后直接输入。
- 这是一个干净的解决方案,还是有更多的最佳实践方法?
谢谢。
回答,@dasblinkenlight 提供:
- "Java team has optimized these wrapper classes, and even built special tricks into the compiler / JVM, to ensure that their performance is as good as possible for a wrapper class",因此创建自定义包装器 class 没有任何好处,不应该是这种方法。
编辑:修改标题以提供更准确的参考。
My first idea is to wrap each int in an object<T>
, and just feed it in.
您不必 - 这就是 java.lang.Integer
的目的。 Java.
的所有其他基本类型都存在类似的包装器类型
Is this a clean solution, or is there more of a best practices approach?
这取决于您的性能要求。如果包装基元是可以接受的(它适用于大多数应用程序),那么您就有了可行的方法。
在不太可能的情况下,这种方法不够快,您需要为每个基元类型构建特殊的 类,其方式类似于 Java 对基元流的处理方式( IntStream
, LongStream
, DoubleStream
, 等)
我正在编写一个小型个人排序方法和数据结构库,我正试图通过允许它们使用泛型类型来使我的 classes 更健壮,使用 <T extends Comparable<T>>
。当我阅读一个充满 String
类型的文本文件或需要存储具有 compareTo()
方法的自定义 class objects 时,这非常有效。我不确定的是如何将此功能扩展到一个充满数字的文本文件,例如所有类型 int
。在我的理解中,int
是一个原始类型,没有任何方法,包括compareTo()
。这会阻止我的 classes 能够接受类型 int
.
- 我的第一个想法是将每个
int
包裹在一个object<T>
中,然后直接输入。 - 这是一个干净的解决方案,还是有更多的最佳实践方法?
谢谢。
回答,@dasblinkenlight 提供:
- "Java team has optimized these wrapper classes, and even built special tricks into the compiler / JVM, to ensure that their performance is as good as possible for a wrapper class",因此创建自定义包装器 class 没有任何好处,不应该是这种方法。
编辑:修改标题以提供更准确的参考。
My first idea is to wrap each int in an
object<T>
, and just feed it in.
您不必 - 这就是 java.lang.Integer
的目的。 Java.
Is this a clean solution, or is there more of a best practices approach?
这取决于您的性能要求。如果包装基元是可以接受的(它适用于大多数应用程序),那么您就有了可行的方法。
在不太可能的情况下,这种方法不够快,您需要为每个基元类型构建特殊的 类,其方式类似于 Java 对基元流的处理方式( IntStream
, LongStream
, DoubleStream
, 等)