加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何从一般的特定类获取一个类文字

发布时间:2020-12-14 05:32:53 所属栏目:Java 来源:网络整理
导读:有这样的方法需要类文字作为参数. CollectionEmpInfo emps = SomeSqlUtil.select( EmpInfo.class,"select * from emps"); 要么 GWT.create(Razmataz.class); 当我需要提供通用的特定类时,问题就出现了 EmpInfoStringRazmatazInteger 以下将是错误的语法 Coll
有这样的方法需要类文字作为参数.
Collection<EmpInfo> emps =  
  SomeSqlUtil.select(  
  EmpInfo.class,"select * from emps");

要么

GWT.create(Razmataz.class);

当我需要提供通用的特定类时,问题就出现了

EmpInfo<String>
Razmataz<Integer>

以下将是错误的语法

Collection<EmpInfo<String>> emps =  
  SomeSqlUtil.select(  
  EmpInfo<String>.class,"select * from emps");

要么

GWT.create(Razmataz<Integer>.class);

因为你不能做类似的语法

Razmataz<Integer>.class

那么,我怎么能挤出一个班级文字

EmpInfo<String>
Razmataz<Integer>

所以我可以把它们作为需要类文字的方法的参数?

更多信息

好的,我承认我主要是要求GWT.

我有一对GWT RPC接口Razmataz. (FYI,GWT RPC接口必须在服务器 – 客户端对中定义).我打算使用相同的接口对来进行通信,无论是String,Integer,Boolean等.

Razmataz< T>的GWT.create(Razmataz)
抱怨说,由于我没有指定T,GWT编译器将其视为对象.那么GWT编译器不会接受Object类.它需要比作为一个对象更具体.

所以,似乎没有办法告诉GWT.创建T是什么,因为一个类文字是一个运行时概念,而泛型是一个编译时的概念,对吗?

解决方法

报价从 Java Generics and Collections,第7.2节:

Class literals are also restricted; it is not even syntactically valid to supply a type parameter to the type in a class literal. Thus,the following fragment is illegal:

class ClassLiteral {
  public Class<?> k = List<Integer>.class;  // syntax error
}

Indeed,Java’s grammar makes a phrase such as the preceding one difficult to parse,and it may trigger a cascade of syntax errors […]

This syntax problem leads to an irregularity. Everywhere else that a reifiable type is required,you may supply either a raw type (such as List) or a parameterized type with unbounded wildcards (such as List<?>). However,for class tokens,you must supply a raw type; not even unbounded wildcards may appear. Replacing List<Integer> with List<?> in the preceding code leads to a similar error cascade.

所以,别无选择,只能在类标记中使用原始类型

GWT.create(Razmataz.class);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读