Могу ли я свернуть эти два метода "getFields" в один, используя обобщенные (второй метод предназначен для упаковки частного доступа), или мне следует переименовать второй в нечто уродливое, например "getFieldPackagePrivate"?
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();
Идея состоит в том, чтобы иметь чистый, сохраняемый интерфейс для внешнего мира и удобный доступ (без потерь) из видимых пакетов реализации. В моем Field Class есть несколько методов, которые я не хочу видеть клиентом, но их нужно вызывать из других классов в том же пакете (как, например, setLabel и т. Д.)