1

私はこのクラスを持っています:

public abstract class SuperClass<
   CONE extends ClassOne,
   OBJ,
   VOBJ extends ValidateValue<OBJ>>

私はこれで拡張しようとしています:

public class SubClass<CONE,VOBJ>
   extends SuperClass<CONE,Object,VOBJ>  {

しかし、これら2つのエラーが発生しています。

type parameter CONE is not within its bound
public class SubClass<CONE,VOBJ> extends SuperClass<CONE,Object,VOBJ>  {
type parameter VOBJ is not within its bound
public class SubClass<CONE,VOBJ> extends SuperClass<CONE,Object,VOBJ>  {

SubClass を次のように変更すると:

public class SubClass
   extends SuperClass<ClassOne,Object,ValidateValue<Object>>  {

それはうまくコンパイルされます。

私は単に CONE と VOBJ をチェーンに渡しているだけなので、これは私には意味がありません。

アドバイスをいただければ幸いです。これは私を困惑させます。ありがとうございました。

4

1 に答える 1

4

で宣言された型パラメータ

public class SubClass<CONE,VOBJ>

すなわち。ONE期待さVOBJれる境界SuperClassがないため、親クラスの型引数として使用できません。それはする必要があります

public class SubClass<CONE extends ClassOne, VOBJ extends ValidateValue<Object>>>
   extends SuperClass<CONE, Object, VOBJ>  {
    ...
}

機能する宣言で

public class SubClass
   extends SuperClass<ClassOne,Object,ValidateValue<Object>>  {

境界に一致する型引数を渡しています。ClassOneに一致T extends ClassOneし、where isにValidateValue<Object>一致します。T extends ValidateValue<F>FObject

于 2013-11-03T17:54:23.610 に答える