java - 作为变量的通用参数 - Java

标签 java generics variables type-safety

构造函数NotePanel(itemClass)引用缺失的类型itemClass我有一个类NotePanel<T extends AbstractNoteItem> extends JPanel ,以及一个单独的类中返回 NotePanel 的方法应在方法期间创建:

public class NoteList extends JList {
    ...
    public class NoteListModel extends AbstractListModel {
        ...
        public NotePanel getPanelFromIndex(int index) {
            if (!indexExists(index)) {
                // FYI, indexExists(int) works fine
                return null;
            } else {
                AbstractNoteItem item = getElementAt(index);
                // FYI, getElementAt(int) works fine
                assert (item != null);  
                Class<?> itemClass = item.getClass();
                return (new NotePanel<itemClass> (item));
            }
        }
    }
}

返回新 NotePanel 的行上有错误:“构造函数 NotePanel(itemClass) 引用缺失的类型 itemClass。”有人能告诉我如何实现这个功能吗?

如果这还不够,我很乐意提供更多。我所有的进口都按顺序进行(谢谢组织进口!)。我没有看到任何明显的问题,但我也是使用泛型的新手。

提前致谢!

最佳答案

您尝试执行的操作无法正常工作,因为泛型类型参数仅存在于编译时;由于类型删除,它们在运行时没有任何影响。因此,使用 Class<?> 是没有意义的。在运行时作为泛型类型参数获得。

如果不知道你为什么想要NotePanel,就很难提出合适的替代方案。首先要通用。

关于java - 作为变量的通用参数 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7212670/

相关文章:

java - 如何使用 NoSuchAlgorithmException 和 KeyStoreException 覆盖 JUnit 的 block 捕获

java - 获取 java.lang.reflect.Type 的简单代码

WPF 设计器在解析具有覆盖属性的通用控件时存在错误

java - 执行运行时在逻辑 block 内初始化的局部变量?

javascript - 从 Javascript 中的对象调用事物时有哪些限制?

PHP 类 : parent/child communication

Java 拖放至 native 操作系统

java - 具有相同公钥的服务器和客户端 SSL 证书

Java:CSV文件读写

java - 定义和引用在 Play 模板签名中绑定(bind)的泛型类型