Java多级通用继承

Java Multilevel Generic Inheritance

本问题已经有最佳答案,请猛点这里访问。

我发现的最近的问题(方法链接:如何在多层继承的情况下使用getthis()技巧)没有直接回答我的问题。我目前正在使用吗啡,正在设置一个休息服务。我已经看到了许多版本的如何实现它,并决定这样做。我完全开放的建议,但是,学习如何通过这个问题,将有助于我的编码实践,至少我认为它会。另外,我知道我的命名约定可能会被取消,所以我也愿意接受这样的更正:)

这是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
                          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;
    }

最后,我希望有一个studentcontroller、staffcontroller等从usercontroller继承。并且basecontroller将是其他控制器(而不是用户)的父级。但是,我不知道该怎么做。我确实试着满足

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

将super(type)中的"type"替换为userentity.class,但是这样只允许basecontroller返回userentity属性。有什么解决办法吗?如果有一种方法……如我所说,我仍然在学习,并且完全愿意接受其他关于这个问题的建议或任何关于这个特定问题的建议。非常感谢!谢谢:)


我想你的目的是

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

因为这样可以让你把一个Class传给超级班。