Там в следующий класс:Pass параметр типа для метода интерфейса
public abstract class AbstractWriter<T extends BE> {
protected final T be;
// Constructor, some methods
public static interface Setter {
void setNewValue();
}
protected <S> void setValue(final Class<S> clazz, final S oldValue,
final S newValue, final Setter setter) {
// Do something
setter.setNewValue();
// Do something
}
}
Тогда есть PersonWriter
, которая простирается AbstractWriter
и выглядит в настоящее время следующим образом:
public class PersonWriter extends AbstractWriter<BEPerson> {
public PersonWriter(BEPerson be) {
super(be);
}
public void setName(String oldValue, final String newValue) {
setValue(String.class, oldValue, newValue, new Setter() {
@Override
public void setNewValue() {
be.setName(newValue);
}
});
};
}
Но я хочу setName
выглядеть следующим образом :
public void setName(String oldValue, String newValue) {
setValue(String.class, oldValue, newValue, new Setter() {
@Override
public void setNewValue(String newValue) {
be.setName(newValue);
}
});
};
Как мне изменить AbstractWriter
, чтобы он работал (если это возможно)?
Я попытался сначала с параметром типа в методе 'setNewValue', но это не сработало. –