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