public abstract class PropertySource<T> {
//表示这个属性源的名字
protected final String name;
//表示这个属性源的源
protected final T source;
public PropertySource(String name, T source) {
this.name = name;
this.source = source;
}
public PropertySource(String name) {
this(name, (T) new Object());
}
public String getName() {
return this.name;
}
public T getSource() {
return this.source;
}
public boolean containsProperty(String name) {
return (getProperty(name) != null);
}
@Nullable
public abstract Object getProperty(String name);
}