强制参数化类型作为构造函数参数是正确的

djB*_*jBo 3 java generics

我一直在寻找相当长的一段时间,并没有真正接近我需要的东西.

示例代码:

public class MyQueue<E extends Delayed & Serializable> extends DelayQueue<E> {
    private Class<E> mClass;
    public MyQueue(Class<E> type) {
        super();
        mClass = type;
    }
}
Run Code Online (Sandbox Code Playgroud)

MyQueue的创建方式如下:MyQueue q<MyObj> = new MyQueue<MyObj>(MyObj.class);.

我的问题:如何以这种方式编写构造函数,参数"type"是正确的参数化类型"E extends Delayed&Serializable"?

我希望我已经解释好了.

提前感谢您的任何帮助.

编辑:从答案和评论我起初无法选择正确的答案.因此,我第一次尝试用我想要的东西来增强我的问题,以及我现在最终的结果.例如,在原始帖子中回答我发现的内容.

显然我需要知道的是参数化类型E在构造时间上的类.对于透明度,队列使用E类名称(即MyObj)传递给后备存储.经过大量的阅读后,我逐渐明白,由于类型擦除,我无法更容易获得这些信息.我不得不将该类不仅作为参数化类型传递,还作为构造函数变量传递.

我担心我偶然会这样调用构造函数(MyObj和OthrObj都实现了Delayed和Serializable):

MyQueue q<MyObj> = new MyQueue<MyObj>(OthrObj.Class);
Run Code Online (Sandbox Code Playgroud)

我更好的问题应该是:如何以这种方式编写构造函数,强制构造函数变量E匹配参数化类型E?

它本来会更有意义,它可能更容易理解我所写的内容.从技术上讲,大多数人在某种意义上都是正确的,并且在测试了许多变化之后,我得出了我已经做过的结论,所以咯咯笑对不起 seh和Tnem完全正确并且都值得学分.

Tne*_*nem 5

您所编写的内容是您指定的内容,该type参数将被强制为类型Delayed & Serializable.我看不出这里有什么问题......