使用泛型组合两种方法

时间:2014-02-05 12:21:55

标签: java ebean

我有两个不同的布尔变量设置非常相似,我想创建一个泛型方法,可以处理两个不同的类对象作为参数。

注意:Area和HuntingField是我使用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();

这些是相应类中定义的两种不同的find方法:

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();
}

现在我想创建一个方法,该方法将HuntingField类型对象或Area类型对象作为参数,并在该对象上使用相应的find方法并返回一个布尔值:

public static <T> boolean alreadyExist(Class<T> obj){
    boolean isNewArea = (obj.find.where().eq("id", obj.id)
    .findRowCount() == 1) ? false : true;

但是eclipse告诉我,find和id无法解析或者不是字段。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

java.lang.Class没有名为id的字段。请参阅javadoc here

答案 1 :(得分:0)

你错误地将该课程作为发现者。

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>());