今のところ、フィールドを持つクラスがあります。
@Entity
public class Fuel {
@Id @GeneratedValue
private Long id;
private boolean diesel;
private boolean gasoline;
private boolean etanhol;
private boolean cng;
private boolean electric;
public Fuel() {
// this form used by Hibernate
}
public List<String> getDeclaredFields() {
List<String> fieldList = new ArrayList<String>();
for(Field field : Fuel.class.getDeclaredFields()){
if(!field.getName().contains("_") && !field.getName().equals("id") && !field.getName().equals("serialVersionUID") ) {
fieldList.add(field.getName());
}
Collections.sort(fieldList);
}
return fieldList;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public boolean isDiesel() {
return diesel;
}
public void setDiesel(boolean diesel) {
this.diesel = diesel;
}
public boolean isGasoline() {
return gasoline;
}
public void setGasoline(boolean gasoline) {
this.gasoline = gasoline;
}
public boolean isEtanhol() {
return etanhol;
}
public void setEtanhol(boolean etanhol) {
this.etanhol = etanhol;
}
public boolean isCng() {
return cng;
}
public void setCng(boolean cng) {
this.cng = cng;
}
public boolean isElectric() {
return electric;
}
public void setElectric(boolean electric) {
this.electric = electric;
}
}
それは理にかなっていると思いますが、別の質問をしたとき(自動ギアボックスまたは手動ギアボックスしかないため、愚かな例かもしれません) https://stackoverflow.com/questions/11747644/selectonemenu-from-declared-fields-list- in-pojo、ユーザーは代わりに列挙型を使用することをお勧めします。このように:
public enum Fuel {
DIESEL("diesel"),
GASOLINE("gasoline"),
ETANHOL("etanhol"),
CNG("cng"),
ELECTRIC("electric");
private String label;
private Fuel(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
}
ただし、市場にはハイブリッド車 (トヨタ プリウスなど) が存在するため、親クラスは次の方法でブール値クラスを実装します。
private Fuel fuel = new Fuel();
この方法で列挙リストを使用する場合:
private List<Fuel> fuelList = new ArrayList<Fuel>();
ベストプラクティスは何ですか? 100 種類の燃料があるかもしれないことに注意してください (たとえば =)。これはエンティティであるため、データベースに永続化されることを忘れないでください。
よろしくお願いします=)