Java多级通用继承

时间:2015-12-05 12:43:19

标签: java generics multiple-inheritance restful-architecture

我发现的最接近的问题(Method Chaining: How to use getThis() trick in case of multi level inheritance)没有直接回答我的问题。我目前正在使用morphia并正在设置休息服务。我已经看到了许多版本如何实现这一点,并决定这样做。我对建议完全开放,学习如何解决这个问题,将有助于我的编码实践,至少我认为它会。此外,我知道我的命名惯例可能已经关闭,因此我也可以接受修正:)

这是我的代码:

                          1st
/*****************************************************************************/
public interface BaseRepository <T extends BaseEntity> {
    /* Methods Here */
}
public class BaseController<T extends BaseEntity> implements BaseRepository<T> {
    public BaseController(Class<T> type) {
         this.type = type;
    }
    /* Overridden Methods Here*/
}
                         2nd
/*****************************************************************************/
public interface UserRepository<T extends UserEntity> extends BaseRepository<UserEntity> {

    /* Methods Here */

}

public class UserController<T extends UserEntity> extends BaseController<UserEntity> implements UserRepository<T> {

    Class<T> type;

    public UserController(Class<T> type) {
        super(type); // <---- Error Here
        this.type = type;
    }

最终,我想要从UserController继承StudentController,StaffController等。 BaseController将成为其他控制器(非用户)的父级。但是,我不知道正确的方法。我确实试着满足

public UserController(Class<T> type) {
        super(type); // <---- Error Here
        this.type = type;
    }

替换&#34;输入&#34;在具有UserEntity.class的super(type)中,但是这只允许Basecontroller返回UserEntity属性。有解决方案吗如果有办法......就像我说的那样,我仍然在学习,并且在处理这个问题或者在这个特定问题上有任何建议时我完全乐于接受其他建议。非常感激!谢谢:))

1 个答案:

答案 0 :(得分:2)

我认为你的意图是

public class UserController<T extends UserEntity> extends BaseController<T> 
                                                  implements UserRepository<T> {

因为这可以让你将Class<T>传递给超类。