java:强相关的成对类

java:强相关的成对类,java,Java,我有两个相互关联的类: Msg1 <-> Data1 Msg2 <-> Data2 ... Msg1数据1 Msg2数据2 ... 其中,所有“DataX”扩展了超类“Data”,而“MsgX”扩展了类“Msg”。这些超级类目前(简化)为: abstract class Data

我有两个相互关联的类:

Msg1 <-> Data1
Msg2 <-> Data2
...
Msg1数据1
Msg2数据2
...
其中,所有“DataX”扩展了超类“Data”,而“MsgX”扩展了类“Msg”。这些超级类目前(简化)为:


abstract class Dataabstract class Data< MSG extends Msg<? extends Data<MSG>>> {
       MSG msg;
       void modify( MSG msg ) {
           this.msg = msg;
       };   
}
abstract class Msg< DATA extends Data<? extends Msg<DATA>>> {
    abstract DATA createData();

    void modifyData( DATA data ) {
        data.modify( this );
    };  
}
Msg.java:5: error: method modify in class Data<MSG> cannot be applied to given types;
            data.modify( this );
                ^
  required: CAP#1
  found: Msg<DATA>
  reason: argument mismatch; Msg<DATA> cannot be converted to CAP#1
  where DATA,MSG are type-variables:
    DATA extends Data<? extends Msg<DATA>> declared in class Msg
    MSG extends Msg<? extends Data<MSG>> declared in class Data
  where CAP#1 is a fresh type-variable:
    CAP#1 extends Msg<DATA> from capture of ? extends Msg<DATA>
1 error