我有两个不同的布尔变量,这些变量设置非常相似,我想创建一个可以将两个不同类作为参数的类对象处理的通用方法。
注意:区域和亨廷场是我使用Ebean创建的两个实体。
目前,这是我为设置两个布尔值的工作:
boolean isNewArea = (Area.find.where().eq("id", area.id)
.findRowCount() == 1) ? false : true;
if (isNewArea) {
area.save();
}
boolean isNewHuntingField = (HuntingField.find.where()
.eq("id", hf.id).findRowCount() == 1) ? false : true;
if (isNewHuntingField) {
hf.save();
这是相应类中定义的两个不同的发现方法:
public static Finder<String, HuntingField> find = new Finder<String, HuntingField>(
String.class, HuntingField.class);
public static HuntingField find(String searchString) {
return find.where().eq("id", searchString).findUnique();
}
和此:
public static Finder<String, Area> find = new Finder<String, Area>(
String.class, Area.class);
public static Area find(String searchString) {
return find.where().eq("id", searchString).findUnique();
}
现在,我想创建一种方法,该方法将亨廷场类型对象或区域类型对象作为参数,并在该对象上使用相应的查找方法并返回布尔值:
public static <T> boolean alreadyExist(Class<T> obj){
boolean isNewArea = (obj.find.where().eq("id", obj.id)
.findRowCount() == 1) ? false : true;
但是Eclipse告诉我,发现和ID无法解决或不是字段。
我在做什么错?
java.lang.class没有名为ID的字段。请参阅此处的Javadoc
您将课堂误认为是Finder。
public static <T> boolean alreadyExist(Finder<String, T> obj){
boolean isNew = (obj.find.where().eq("id", obj.id)
.findRowCount() == 1) ? false : true;
boolean huntingFieldExists = alreadyExist(new Finder<String, HuntingField>());
boolean areaExists = alreadyExist(new Finder<String, Area>());