`
chourentang
  • 浏览: 57568 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Illegal class literal for the type parameter T错误解决方法

    博客分类:
  • Java
 
阅读更多
出现错误的代码如下:
public class ModServiceFinderImpl<Module> extends BaseFinderImpl<Module> implements ModServiceFinder<Module>{
	public PageView<Module> findByModid(String modid, int pageNo, int pageSize ) {
		PageView<Module> pv = new PageView<Module>();
		if(modid != null && !"".equals(modid)) {
			pv = super.findByPage(Module.class,
					"from Module m where m.isShow=1 and m.parent.mod_id=" + modid, pageNo, pageSize);
		}else {
			pv = super.findByPage(Module.class, "from Module m where m.isShow=1",
					pageNo, pageSize);
		}
		return pv;
	}
}

错误信息:Illegal class literal for the type parameter Module

解决方法:将类ModServiceFinderImpl<Module>后的泛型参数去掉

修改后的代码:
public class ModServiceFinderImpl extends BaseFinderImpl<Module> implements ModServiceFinder<Module>{
	public PageView<Module> findByModid(String modid, int pageNo, int pageSize ) {
		PageView<Module> pv = new PageView<Module>();
		if(modid != null && !"".equals(modid)) {
			pv = super.findByPage(Module.class,
					"from Module m where m.isShow=1 and m.parent.mod_id=" + modid, pageNo, pageSize);
		}else {
			pv = super.findByPage(Module.class, "from Module m where m.isShow=1",
					pageNo, pageSize);
		}
		return pv;
	}
}


总结:这个问题与网络上得另一个问题相同:
  问题:Hi all,
        I'm creating a generic class and in one of the methods I need to know the Class of the generic type currently in use. The reason is that one of the method's I call expects this as an argument.
Example:
public class MyGenericClass<T> {
  public void doSomething() {
    // Snip...
    // Call to a 3rd party lib
    T bean = (T)someObject.create(T.class);
    // Snip...
  }
}

Clearly the example above doesn't work and results in the following error: Illegal class literal for the type parameter T.
My question is: does someone know a good alternative or workaround for this?

  解决方法:
Still the same problems : Generic informations are erased at runtime, it cannot be recovered. A workaround is to pass the class T in parameter of a static method :
public class MyGenericClass<T> {

    private final Class<T> clazz;

    public static <U> MyGenericClass<U> createMyGeneric(Class<U> clazz) {
        return new MyGenericClass<U>(clazz);
    }

    protected MyGenericClass(Class<T> clazz) {
        this.clazz = clazz;
    }

    public void doSomething() {
        T instance = clazz.newInstance();
    }
}

It's ugly, but it works.

注:对泛型的讲解可产考:http://www.infoq.com/cn/articles/cf-java-generics
分享到:
评论

相关推荐

    AES加密时抛出java.security.InvalidKeyException: Illegal key size or default parameter

    对于`java.security.InvalidKeyException: Illegal key size or default parameter`这个异常,主要原因是Java默认的安全策略限制了密钥的长度,解决方法是下载并安装JCE Unlimited Strength Jurisdiction Policy ...

    illegal opcode 红屏报错(hp 360 G6安装win2021)问题解决方法.docx

    在 HP 360 G6 安装 Win 2021 时,illegal opcode 错误可以通过以下方法解决: 1. 删除之前做的 RAID 后重新做 RAID:这可以解决由于 RAID 设置不正确所致的 illegal opcode 错误。 2. 更新 BIOS:这可以解决由于 ...

    AES加密出现InvalidKeyException之Illegal key size解决方案

    今日遇到如下错误:java.security.InvalidKeyException: Illegal key size 因为美国法律限制,JAVA默认支持AES 128 Bit 的key, 如果你计划使用 192 Bit 或者 256 Bit key, java complier 会抛出 Illegal key size ...

    C++常见错误汇总.doc

    了解这些错误类型和解决方法对C++程序员来说非常重要,可以帮助他们快速诊断和解决问题,提高编程效率。 1. fatal error C1010: unexpected end of file while looking for precompiled header directive 这是编译...

    CheckStyle常见错误.docx

    错误解决方法:“* @param unused parameter additional(参数名称)” 把这行 unused 参数的注释去掉 在 Java 中,不需要的参数注释可以被删除,以便代码更加简洁。 11. Variable “CA” missing javadoc 错误解决...

    C++常见错误汇总

    error C2011: 'C……': 'class' type redefinition 这个错误是类“C……”重定义。解决方法是检查类的定义是否正确,是否存在多个相同的类定义。 error C2018: unknown character '0xa3' 这个错误是不认识的字符'...

    解决illegal Key Size jdk7版本

    在Java开发过程中,有时会遇到“illegal key size”这样的错误,这通常是由于Java加密相关的安全限制所导致的。这个问题在 JDK 7 版本中尤为常见,因为默认配置的Java Cryptography Extension (JCE) 有对密钥长度的...

    51单片机keil软件常见错误解决办法

    本文将详细介绍Keil C51中常见的错误类型及其解决方法,帮助读者更好地理解和解决这些问题。 #### 错误类型 在Keil C51编译器中,错误主要分为以下三类: 1. **致命错误**:这类错误通常发生在编译过程的早期阶段...

    javaAES错误解决办法java.security.InvalidKeyException:illegal

    解决办法。 如在加密过程中出现下面异常: java.security.InvalidKeyException:illegal Key Size 请将两个jar文件按下列操作完成: 如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件;...

    java.security.InvalidKeyException: Illegal key size 解决方案

    在Java编程中,`java.security.InvalidKeyException: Illegal key size` 是一个常见的错误,通常出现在加密或解密操作中,尤其是涉及到对称加密算法如AES(高级加密标准)时。这个错误表明您试图使用的密钥长度不受...

    illegal opcode(解决方案).md

    illegal opcode(解决方案).md

    解决java.security.InvalidKeyException: Illegal key size

    在Java编程环境中,有时会遇到一个常见的错误:"java.security.InvalidKeyException: Illegal key size"。这个错误通常是由于Java安全策略的限制导致的,尤其是当你尝试使用超过默认限制的密钥长度(例如,超过128位...

    JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法

    本文实例讲述了JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法。分享给大家供大家参考,具体如下: Uncaught SyntaxError: Unexpected token ILLEGAL 未捕获的语法错误: 意想不到的非法...

    TC 编译连接错误提示信息

    本文将详细介绍Turbo C编译器(以下简称TC)中的常见错误类型及其对应的含义与解决方法。 #### 错误类型 TC编译器通常会报告三种类型的错误信息:致命错误、一般错误和警告。每种类型的错误对程序的影响不同,理解...

    delphi 错误大全

    ### Delphi 编译错误详解 #### ';' not allowed before 'ELSE' **错误描述:** 当在 Delphi 的条件语句中,在 `ELSE` 关键字之前出现了分号(`;`)时,会触发此错误。 **解决办法:** 确保 `ELSE` 关键字之前不要...

    KEIL编译错误信息

    ### KEIL编译错误信息详解 #### 一、概述 在使用KEIL进行软件开发时,我们经常会遇到各种各样的编译错误。这些错误可能是由于语法不正确、内存不足、类型不匹配等原因导致的。了解并掌握这些错误信息对于解决编程...

    delphi编译错误.txt

    ### Delphi 编译错误大全 #### 概述 Delphi 是一款强大的集成开发环境(IDE),主要用于构建 Windows 应用程序。它基于 Object Pascal 语言,并提供了丰富的库支持和高效的编译器。然而,在使用 Delphi 开发过程中...

    C语言常见错误中文解释

    **解决方法**:检查是否有不必要的代码,或是代码逻辑错误导致的执行路径不可达。 #### Compound statement missing ‘}’ (复合语句缺少 ‘}’) **错误说明**:复合语句的结尾缺少了一个大括号。 **解决方法**:...

    java.security.InvalidKeyException: Illegal key size 更换的Jar包

    为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行...然而,在使用256位密钥加解密的时候,如果不进行特殊处理的话,往往会出现这个异常java.security.InvalidKeyException: Illegal key size。

    base64转换遇到问题解决方法

    1. Access restriction:在Eclipse中编写Java代码时,使用了BASE64Decoder,但Eclipse提示:Access restriction : The type BASE64Decoder is not accessible due to restriction on required library C:\Program ...

Global site tag (gtag.js) - Google Analytics