Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java通配符错误_Java_Generics_Bounded Wildcard - Fatal编程技术网

Java通配符错误

Java通配符错误,java,generics,bounded-wildcard,Java,Generics,Bounded Wildcard,我有一个BaseDao接口,可以使用hibernate将数据持久化到mysql public interface BaseDao<T extends Serializable> { public void saveAll(Collection<T> objects) throws PersistenceException; } 在某些类中,我声明ActivityDao: protected abstract ActivityDao<Activity1&g

我有一个BaseDao接口,可以使用hibernate将数据持久化到mysql

public interface BaseDao<T extends Serializable> {
    public void saveAll(Collection<T> objects) throws PersistenceException;
}
在某些类中,我声明ActivityDao:

 protected abstract ActivityDao<Activity1> createActivityDao1();
受保护的抽象活动dao createActivityDao1();
以及一种方法:

 private void  persistData(ActivityDao<? extends BaseActivity> activityDao, Collection<? extends BaseActivity> data){
    EntityTransaction transaction = activityDao.getEntityManager().getTransaction();

    try {
        transaction.begin();

        activityDao.saveAll(data);
        transaction.commit();
    }
    catch (HibernateException ex) {

private void persistData(ActivityDao使用两个具有相同边界的有界通配符并不意味着它们是相同的类型。在这种情况下,
ActivityDao的实际类型参数是BaseActivity Serializable?是:公共抽象类BaseActivity实现了Serializable,Compariable{好吧,那将是乏味的。这是同一个问题。你必须找到某种方法使该类成为泛型类。或者你需要一些肮脏的解决方法才能使其正常工作。谢谢!删除了,因为它确实是同一个问题。我已经为集合和活动使用包装类解决了它。非常感谢你的回答!就是这样。在e发布问题我尝试将该方法实现为模板方法,但问题是,我有两个带有通配符的字段,当将它们传递给方法时,会导致相同的错误。我正在更新代码
 private void  persistData(ActivityDao<? extends BaseActivity> activityDao, Collection<? extends BaseActivity> data){
    EntityTransaction transaction = activityDao.getEntityManager().getTransaction();

    try {
        transaction.begin();

        activityDao.saveAll(data);
        transaction.commit();
    }
    catch (HibernateException ex) {
 Error:(62, 24) java: method saveAll in interface com.matomy.persistence.dao.BaseDao<T>
 cannot be applied to given types;
 required: java.util.Collection<capture#1 of ? extends
 com.matomy.persistence.entity.activities.BaseActivity>
 found: java.util.Collection<capture#2 of ? extends   com.matomy.persistence.entity.activities.BaseActivity>
 reason: actual argument java.util.Collection<capture#2 of ? extends     com.matomy.persistence.entity.activities.BaseActivity>
 cannot be converted to java.util.Collection<capture#1 of ? extends     com.matomy.persistence.entity.activities.BaseActivity> 
 by method invocation conversion
public abstract class BaseActivity implements Serializable, Comparable<BaseActivity> {
private <T extends BaseActivity> void  persistData(ActivityDao<T> activityDao, Collection<T> col){
    EntityTransaction transaction = activityDao.getEntityManager().getTransaction();

    try {
        transaction.begin();

        activityDao.saveAll(col);
        transaction.commit();
    }
    catch (HibernateException ex) {
private void  persistData(ActivityDao<CAP#1-of-? extends BaseActivity> activityDao, Collection<CAP#2-of-? extends BaseActivity> data){
    EntityTransaction transaction = activityDao.getEntityManager().getTransaction();

    try {
        transaction.begin();

        activityDao.saveAll(data);
        transaction.commit();
    }
    catch (HibernateException ex) {
    }
}
public void saveAll(Collection<CAP#1-of-? extends BaseActivity> objects) throws PersistenceException;
private <T extends BaseActivity> void persistData(ActivityDao<T> activityDao, Collection<T> data){