出现错误的代码如下:
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
分享到:
相关推荐
对于`java.security.InvalidKeyException: Illegal key size or default parameter`这个异常,主要原因是Java默认的安全策略限制了密钥的长度,解决方法是下载并安装JCE Unlimited Strength Jurisdiction Policy ...
在 HP 360 G6 安装 Win 2021 时,illegal opcode 错误可以通过以下方法解决: 1. 删除之前做的 RAID 后重新做 RAID:这可以解决由于 RAID 设置不正确所致的 illegal opcode 错误。 2. 更新 BIOS:这可以解决由于 ...
今日遇到如下错误:java.security.InvalidKeyException: Illegal key size 因为美国法律限制,JAVA默认支持AES 128 Bit 的key, 如果你计划使用 192 Bit 或者 256 Bit key, java complier 会抛出 Illegal key size ...
了解这些错误类型和解决方法对C++程序员来说非常重要,可以帮助他们快速诊断和解决问题,提高编程效率。 1. fatal error C1010: unexpected end of file while looking for precompiled header directive 这是编译...
错误解决方法:“* @param unused parameter additional(参数名称)” 把这行 unused 参数的注释去掉 在 Java 中,不需要的参数注释可以被删除,以便代码更加简洁。 11. Variable “CA” missing javadoc 错误解决...
error C2011: 'C……': 'class' type redefinition 这个错误是类“C……”重定义。解决方法是检查类的定义是否正确,是否存在多个相同的类定义。 error C2018: unknown character '0xa3' 这个错误是不认识的字符'...
在Java开发过程中,有时会遇到“illegal key size”这样的错误,这通常是由于Java加密相关的安全限制所导致的。这个问题在 JDK 7 版本中尤为常见,因为默认配置的Java Cryptography Extension (JCE) 有对密钥长度的...
本文将详细介绍Keil C51中常见的错误类型及其解决方法,帮助读者更好地理解和解决这些问题。 #### 错误类型 在Keil C51编译器中,错误主要分为以下三类: 1. **致命错误**:这类错误通常发生在编译过程的早期阶段...
解决办法。 如在加密过程中出现下面异常: java.security.InvalidKeyException:illegal Key Size 请将两个jar文件按下列操作完成: 如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件;...
在Java编程中,`java.security.InvalidKeyException: Illegal key size` 是一个常见的错误,通常出现在加密或解密操作中,尤其是涉及到对称加密算法如AES(高级加密标准)时。这个错误表明您试图使用的密钥长度不受...
illegal opcode(解决方案).md
在Java编程环境中,有时会遇到一个常见的错误:"java.security.InvalidKeyException: Illegal key size"。这个错误通常是由于Java安全策略的限制导致的,尤其是当你尝试使用超过默认限制的密钥长度(例如,超过128位...
本文实例讲述了JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法。分享给大家供大家参考,具体如下: Uncaught SyntaxError: Unexpected token ILLEGAL 未捕获的语法错误: 意想不到的非法...
本文将详细介绍Turbo C编译器(以下简称TC)中的常见错误类型及其对应的含义与解决方法。 #### 错误类型 TC编译器通常会报告三种类型的错误信息:致命错误、一般错误和警告。每种类型的错误对程序的影响不同,理解...
### Delphi 编译错误详解 #### ';' not allowed before 'ELSE' **错误描述:** 当在 Delphi 的条件语句中,在 `ELSE` 关键字之前出现了分号(`;`)时,会触发此错误。 **解决办法:** 确保 `ELSE` 关键字之前不要...
### KEIL编译错误信息详解 #### 一、概述 在使用KEIL进行软件开发时,我们经常会遇到各种各样的编译错误。这些错误可能是由于语法不正确、内存不足、类型不匹配等原因导致的。了解并掌握这些错误信息对于解决编程...
### Delphi 编译错误大全 #### 概述 Delphi 是一款强大的集成开发环境(IDE),主要用于构建 Windows 应用程序。它基于 Object Pascal 语言,并提供了丰富的库支持和高效的编译器。然而,在使用 Delphi 开发过程中...
**解决方法**:检查是否有不必要的代码,或是代码逻辑错误导致的执行路径不可达。 #### Compound statement missing ‘}’ (复合语句缺少 ‘}’) **错误说明**:复合语句的结尾缺少了一个大括号。 **解决方法**:...
为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行...然而,在使用256位密钥加解密的时候,如果不进行特殊处理的话,往往会出现这个异常java.security.InvalidKeyException: Illegal key size。
1. Access restriction:在Eclipse中编写Java代码时,使用了BASE64Decoder,但Eclipse提示:Access restriction : The type BASE64Decoder is not accessible due to restriction on required library C:\Program ...