在Java FX应用程序中使用属性我对了解属性用法产生了疑问:在使用类实例成员... Property与Simple ... Property之间有什么实际区别?
props.setProperty("annotators",
"tokenize,ssplit,pos,lemma,ner,parse,depparse,coref,kbp,quote");
// set a property for an annotator, in this case the coref annotator is being set to use the neural algorithm
props.setProperty("coref.algorithm", "neural");
// build pipeline
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
// create a document object
CoreDocument document = new CoreDocument(content);
// annnotate the document
pipeline.annotate(document);
反对
public class Foo {
private IntegerProperty id;
public Foo(int id) {
this.id = new SimpleIntegerProperty(id);
}
public IntegerProperty idProperty() {
return this.id;
}
public int getId() {
return id.get();
}
public void setId(int id) {
this.id.set(id);
}
}
答案 0 :(得分:1)
您的第一个实现确实是一个很好的实现。
您应尽可能使用最抽象的类型(在您的情况下为IntegerProperty)。
主要原因是它允许您更改实现而无需更改方法的原型/定义,因此无需更改任何调用方。
考虑一下Set的相同情况,然后从HashSet具体类型迁移到LinkedHashSet。