У меня есть класс Property
, в котором нет ничего, кроме get
-методов. Все поля будут установлены при создании нового экземпляра Property
. Property
реализует интерфейс под названием IProperty
.
Из-за какой-то ошибки в библиотеке, которую я использую, мне приходится заново устанавливать имя экземпляра Property
после его создания. Поэтому было предложено создать WrapperProperty
класс, который будет предоставлять общедоступный setName
-метод, который сам вызывает созданный таким образом setName()
-метод в Property
, который будет защищенным/пакетным представлением.
Проблема в том, что я не могу сделать этот метод защищенным в Property
, потому что Eclipse говорит мне добавить его в интерфейс IProperty
и сделать общедоступным.
Есть ли обходной путь?
WrapperIPProperty:
public class WrapperIProperty {
private IProperty prop;
WrapperIProperty(Property prop) {
this.prop = prop;
}
public void setName(String name) {
prop.setName(name);
}
}
Свойство:
public class Property implements IProperty {
String name;
protected void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getFoobar() {
return 123;
}
public int getWhatever() {
return 987;
}
}
Имущество:
public interface IProperty {
public int getWhatever();
public int getFoobar();
public String getName();
}
Вот так это выглядит на данный момент. Очевидно, что это не сработает, так как я не могу позволить защитить метод в классе Property
. Поэтому мне лучше как-то избавиться от записи interfacee. Но как?
WrapperIProperty
будет работать. - person arshajii   schedule 22.06.2012Property
всегда имеет общедоступный методsetName
, поскольку он реализует IProperty. Но вы утверждаете, чтоsetName
только временно. Что тут происходит? - person predi   schedule 22.06.2012