2

別のジェネリック クラスを拡張するジェネリック クラスがあります。

抽象クラスには 2 つの型パラメーターがありますが、関数には 1 つしか必要ありません。

String 型のようにランダムに割り当てるだけで保存できますか、それともこれには欠点がありますか?

public abstract class AbstractFoo<T, B>
{
   public abstract void read(T item);
}

public class LittleFoo extends AbstractFoo<byte[], String>
{
   @Override
   public void read(byte[] item)
   {
      // work here
   }
}
4

2 に答える 2

5

java.lang.Voidまたは、の代わりに使用できますString

于 2012-11-20T18:43:49.360 に答える
3

いいえ、これには実際には何の欠点もありません。私の意見では、これは簡単な方法のように思えます。

また、extensionの代わりにコンポジションを使用することを検討することもできます。たとえば、次の実装を見てください。HashSetjava.util

87   public class HashSet<E>
88       extends AbstractSet<E>
89       implements Set<E>, Cloneable, java.io.Serializable
90   {
91       static final long serialVersionUID = -5024744406713321676L;
92   
93       private transient HashMap<E,Object> map;
94   
95       // Dummy value to associate with an Object in the backing Map
96       private static final Object PRESENT = new Object();

AHashSetは基本的に aHashMapですが、キーのセットのみを考慮します (したがって、PRESENT単なるプレースホルダーであるダミー変数 )。似たようなことができるかもしれません。

于 2012-11-20T18:40:58.667 に答える