У меня есть 3 класса, Professional, Doctor и Blog, как описано ниже:
public class Professional {
}
@DatabaseTable(tableName = "doctors", daoClass = DoctorDao.class)
public class Doctor extends Professional {
@DatabaseField(columnName = "id", generatedId = true)
Long id;
@DatabaseField(columnName = "name")
String name;
public Doctor() {
}
}
@DatabaseTable(tableName = "blogs", daoClass = BlogDao.class)
public class Blog<T> {
@DatabaseField(columnName = "id", generatedId = true)
Long id;
@DatabaseField(columnName = "title")
String title;
@DatabaseField(columnName = "blog_of", foreign = true, canBeNull = false, foreignAutoCreate = true)
T author;
}
Я не могу создать DAO для класса Blog, так как не могу вызвать конструктор с универсальным параметром для класса Blog,DAO для блога:
public interface BlogDaoInterface extends Dao<Blog<? extends Professional>, Long> {
}
public class BlogDao extends BaseDaoImpl<Blog<? extends Professional>, Long> implements BlogDaoInterface {
public BlogDao(ConnectionSource connectionSource) throws SQLException {
super(connectionSource, Blog<? extends Professional>.class);
}
}
ОШИБКА: ormlite не может создать DAO класса Blog (т.е. BlogDao).Код не компилируется успешно.
Я использовал ormlite для создания таблиц по следующей строке кода:
TableUtils.createTableIfNotExists(connectionSource, Blog.class);
Но Gradle показывает следующую ошибку:
невозможно выбрать из параметризованного типа
в классе BlogDao в следующей строке его конструктора:
super(connectionSource, Blog<? extends Professional>.class);
Что такоеправильный способ сделать это?