繁体   English   中英

Java在运行时确定类型T

[英]Java Determine type T at runtime

我有以下Java代码;

PagedResponse<Person> response = new PagedResponse<Person>();
TypedQuery<Person> query = getNamedQuery("Person.findSpecific", Person.class);
response = executePagedTypedQuery(query);

现在executePagedTypedQuery定义为;

protected <T> PagedResponse<T> executePagedTypedQuery(TypedQuery query) {

PagedResponse<T> response = new PagedResponse<T>();
List<T> resultList = query.getResultList();

}

现在,我希望在executePagedTypedQuery()方法内部,将类型T设置为“ Person”,这就是我要传递的内容。 但是由于某种原因,在调试时,它说

T = >"T" is not a known variable in the current context.<

我是否错误地传递了参数?

如果将签名更改为

protected <T> PagedResponse<T> executePagedTypedQuery(TypedQuery<T> query)

那么当您传递查询时,将相应地选择T

您不会错误地调用该方法; T不作为参数传递给方法。

Java中的泛型基本上是编译时语法糖,以防止您不得不在任何地方进行大量强制转换。 假设所有对T的引用都是对最大父类型T引用(如果它具有类型约束),则假定该对象是对最大父类型T引用;如果没有约束,则将生成Object 这称为类型擦除

与C#中的情况联系起来-类型参数实际上是您的代码可访问的,因此您可以编写诸如new T();类的东西new T(); typeof(T) (相当于Java T.class )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM