如何修复Eclipse </type>中的Collection <type>导入问题

时间:2014-09-01 16:03:16

标签: java eclipse spring

在Spring MVC AOP项目中,我有两个接口和两个类,超出了Model类,如下所示:

  1. ActivityDao(界面)
  2. ActivityDaoImpl(Class)
  3. ActivityService(接口)
  4. ActivityServiceImpl(Class)
  5. 活动(班级)
  6. 模型类(n.5):

    package com.mycompany.myproject.model;
    //... imports
    @Entity
    public class Activity {
      @NotNull
      private long id;
      private String description;
      public Activity() {
      }
      //... getters and setters
    }
    

    Dao Interface(n.1):

    package com.mycompany.myproject.dao;
    import com.mycompany.myproject.model.Activity;
    import java.util.Collection;
    
    public interface ActivityDao {
      public Collection<Activity> findAll();
      public void delete(Activity activity);
      public void create(Activity activity);
      public Activity update(Activity activity);
      }
    }
    

    Dao Implementation(n.2):

    package com.mycompany.myproject.dao.impl;
    
    import com.mycompany.myproject.model.Activity;
    import com.mycompany.myproject.dao.ActivityDao;
    import java.util.Collection;
    // ... other imports
    @Repository
    public class ActivityDaoImpl implements ActivityDao {
    
      //... Spring autowiring, etc.
    
      public Collection<Activity> findAll(){ //...
      }
      // other methods implementation
    }
    

    服务界面(n.3):

    package com.mycompany.myproject.service;
    import com.mycompany.myproject.model.Activity;
    import java.util.Collection;
    //... other imports
    
    public interface ActivityService {
      public Collection<Activity> getAllActivities();
      // other method statements
    }
    

    服务类(n.4):

    package com.mycompany.myproject.service.impl;
    import com.mycompany.myproject.model.Activity;
    import com.mycompany.myproject.dao.ActivityDao;
    import java.util.Collection;
    import com.mycompany.myproject.service.ActivityService;
    // ... other imports
    @Service
    @Transactional(readOnly = true) 
    public class ActivityServiceImpl implements ActivityService {
    
      @Autowired
      ActivityDao activityDao;      
    
      public Collection<Activity> getAllActivities(){ //<=== ERROR!
         return activityDao.findAll(); 
      }
      // other methods implementation
    }
    

    Eclipse的Java语法检查是在Service Class实现(n.4)中使用Collection返回类型的每个方法中的showin错误警告返回类型与Dao的方法返回不兼容。

    当接受来自快速修复对话框的建议时,Eclipse将服务的方法类型更改为Collection<com.mycompany.myproject.service.Activity>,而不是Collection<com.mycompany.myproject.model.Activity>,这是模型类的正确位置(或者更好Collection<Activity>因为这是合理的)。

    乍一看,似乎Eclipse环境中的java语法cheker对接口的Collection类型和Dao类的Collection感到困惑,当它们不是时,将它作为不同的类型进行威胁。

    关于如何解决这个非常烦人的问题,或者我可能做错了什么?非常感谢!

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。显然Eclipse正在与buildpath中另一个项目的类混淆。强制它通过修复pannel建议更新import语句,它从构建路径中的相关项目中激活了import语句。然后再次编写正确的import语句似乎更新了编译器链接,现在错误不再显示了。