2014-02-05 1 views
0

У меня есть две разные булевы переменные, которые установлены очень похожими, и я хочу создать общий метод, который может обрабатывать два разных объекта класса в качестве аргумента.Объединить два метода с использованием генериков

Примечание: Area and 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(); 

Эти два метода находят определенные в соответствующих классах:

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 или тип области е объект в качестве параметра и использует соответствующий метод найти на этом объекте и возвращает логическое значение:

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

Но затмение говорит мне, что найти и идентификатор не может быть разрешен или не является полем.

Что я делаю неправильно?

+0

Может быть, 'Area' и' HuntingField' должны реализовывать общий интерфейс? – ooxi

ответ

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

Я получаю те же ошибки с этим кодом. – user3275034