[英]Should I use uppercase or camelcase in label enums?
ORACLE DOC: Because they are constants, the names of an enum type's fields are in uppercase letters.
檢查: http : //docs.oracle.com/javase/tutorial/java/javaOO/enum.html
為了符合Java約定,我可以覆蓋Enum#toString()
並使用它來代替Enum#name()
,它不能被覆蓋。 然后每個成員將有一個構造函數及其真正的Neo4j標簽,如圖數據庫中所示:
public enum Label implements org.neo4j.graphdb.Label {
CAR("Car"),
BIKE("Bike"),
BUS("Bus");
private String name;
private Label(name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
這與GraphDatabaseService#findNodesByLabelAndProperty(Label, String, String)
等方法不GraphDatabaseService#findNodesByLabelAndProperty(Label, String, String)
因為它似乎使用Label#name()
進行匹配而不是Label#toString()
因此它不匹配具有camel case的節點數據庫中的標簽。
由於重寫Enum#toString()
不起作用,並且因為Neo4j在內部使用Label#name()
,所以無論如何我都需要覆蓋它。 所以我最終定義了一個實現Label
的類,它能夠覆蓋Label#name()
:
public class Label implements org.neo4j.graphdb.Label {
public static final Label CAR = new Label("Car");
public static final Label BIKE = new Label("Bike");
public static final Label BUS = new Label("Bus");
private String name;
private Label(String name) {
this.name = name;
}
@Override
public String name() {
return name;
}
@Override
public String toString() {
return name;
}
}
在外部,使用先前的標簽枚舉不需要在客戶端進行任何更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.