2017-10-07 114 views
-1

我有这些特性A类:Java继承

class A { 

String a; 
String b; 
..... 
List<C> myList; 
} 

我想一个类AEXT将延长,也将 “扩展” myList中的属性,这意味着:

class Aext extends A { 

String x; 
..... 
List<Cext> myList; 
.... 
} 

其中:

class Cext extends C { 
...... 
} 

但是我不能在子类中具有与超类相同名称的成员,即:myList。名称不得更改。我想要一个具有C属性和Cext属性的“扩展”myList。 A和B是DTO的,所以我想 有时返回b为A的“丰富”的版本不改变名称,类型等

回答

1

泛型救援。

class A<T extends C> { 

protected String a; 
protected String b; 
..... 
protected List<T> myList; 
} 

现在myList具有延伸C类型T的元件。

当你继承AAext您可以指定​​为myList元素的类型。

class Aext extends A<Cext> { 

String x; 
} 
1

你有仿制药。使用它们。

class A<T extends C> { 
String a; 
String b; 
..... 
List<T> myList; 
} 

class Aext extends A<Cext> { 
}