返回類型重載方法我可以摺疊這兩個「getFields」的方法爲使用泛型一個(第二個方法旨在包專用接入),或者我應該重新命名第二個到像「getFieldPackagePrivate」醜陋的東西?通過在Java
public interface IField {
}
class Field implements IField { // package private class
}
public class IForm {
public List<IField> getFields();
}
public class Form {
private List<Field> fields;
public List<IField> getFields() {
return this.fields;
}
List<Field> getFields() { // package visible
return this.fields;
}
}
的基本用法會是這樣
// by interfece - from client code
IForm form;
List<IField> list = form.getFields();
// by class - from other classes in the same package
Form form2;
List<Field> list2 = forms2.getFields();
的想法是有一個乾淨,保存界面從包可見實施clacces的外面的世界和方便(無需向下轉換)。我的字段類有幾個方法,我不希望被客戶看到,但需要從同一個包中的其他類調用(例如setLabel等)
@lbownik:我已經改變了標題談論過載而而不是壓倒一切,因爲就我所知,這就是你真正感興趣的東西。讓我知道如果這是不正確的。 – 2008-11-24 14:09:00
hm。是不是允許協變?也許他可以從其中將包含列表接口返回基地,並從其中將包含列表實施派生? –
2008-11-24 14:46:39