2017-10-24 8 views
1

ソートメソッドとデータ構造の小さな個人用ライブラリを作成中です。<T extends Comparable<T>>を使用してジェネリック型で作業できるようにすることで、クラスをより堅固にしようとしています。これは、タイプStringで完全なテキストファイルを読み込んでいるとき、またはcompareTo()メソッドを持つカスタムクラスオブジェクトを格納する必要があるときに、完全に機能します。私が確信しているのは、すべてのタイプの数字のフルテキストファイルにこの機能を拡張する方法です。例えば、すべてintです。私の理解では、intはプリミティブ型であり、compareTo()などのメソッドはありません。これにより、クラスがタイプintを受け入れることができなくなります。プリミティブオブジェクトと一緒にジェネリック

  • 私の最初のアイデアはobject<T>で各intをラップし、ただでそれを供給することである。
  • これはクリーンなソリューションである、またはそこベストプラクティスアプローチの詳細ですか?

ありがとうございます。

回答、@dasblinkenlightの礼儀:

  • の「Javaチームは、これらのラッパークラスを最適化し、さらにはコンパイラ/ JVMに特殊なトリックを構築し、彼らのパフォーマンスはラッパーの可能な限り良好であることを保証しなければなりませんカスタムラッパークラスを作成することは利点がなく、アプローチではありません。

編集:より正確な参照のための修正タイトル。

+5

'' int''の '' Integer''のようなプリミティブのラッパークラスを使用するだけです。 – f1sh

+0

'int'の代わりに' Integer'を使うことができますか? 'int i = 0;整数iObject = i '? – pirho

答えて

6

私の最初のアイデアは、それぞれがobject<T>にint型、およびだけで、それを養うラップすることです

あなたがする必要はありません - 。それはjava.lang.Integerが何のためにあるのかです。 Javaの他のすべてのプリミティブ型には、同様のラッパー型が存在します。

これはクリーンな解決策ですか?それ以上のベストプラクティスのアプローチはありますか?

パフォーマンス要件によって異なります。ラッピングプリミティブが受け入れられるなら(それはアプリケーションの大半です)、あなたは実践的なアプローチをしています。このアプローチは、あなたがプリミティブのストリーム上のJavaのテイクと同様に、各プリミティブ型のための特別なクラスを構築する必要があります十分な速さではないとは考えにくいシナリオ(IntStreamLongStreamDoubleStream、など)で

+0

これは私が探していた答えの一種です。この種の機能のためのラッパーとして、java.lang.Integerのようなクラスは考えたことがありません。パフォーマンスの差はまったくなく、カスタムラッパークラスを作成する必要はないと仮定して正しいと思いますか? –

+2

@ChrisPhillips右のように、Javaチームはこれらのラッパークラスを最適化し、コンパイラー/ JVMに特別なトリックを組み込んで、ラッパークラスのパフォーマンスができるだけ良好になるようにしました。 – dasblinkenlight

関連する問題