关于JAVA Entity entity = entityClass.getAnnotation(Entity.class);

关于JAVA Entity entity = entityClass.getAnnotation(Entity.class);,第1张

方法用于取得指定的实体类的实体名称。如果指定的实体类的实体标签定义了名称,则取该名称,否则取类名。

例如:有实体类SampleEntity

import javaxpersistenceEntity;

 

@Entity(name = "SpecialName")

public class SampleEntity {

 

}

以SampleEntity类作为参数调用entityName方法:

1、方法中第一行,String entityName = entityClassgetSimpleName();

变量entityName的值设为类SampleEntity的短名称,即“SampleEntity”。

2、方法中第二行,Entity entity = entityClassgetAnnotation(Entityclass);

即取得SampleEntity的@Entity标签。

3、方法中第三行到第六行,if(entityname()!=null&&!""equals(entityname()))

                                             {

                                                 entityName = entityname();

}

即@Entity标签中定义了name并且name不是空串时, 变量entityName的值设为@Entity标签中name的值,即“SpecialName”。

4、返回变量entityName,值为“SpecialName”。

如果SampleEntity的@Entity标签没有定义name

import javaxpersistenceEntity;

@Entity

public class SampleEntity {

}

方法中第三行,if(entityname()!=null&&!""equals(entityname()))条件不成立,最终方法返回变量entityName,值为“SampleEntity”。

1 public Type getGenericSuperclass()

用来返回表示当前Class 所表示的实体(类、接口、基本类型或 void)的直接超类的Type。如果这个直接超类是参数化类型的,则返回的Type对象必须明确反映在源代码中声明时使用的类型。比如:

import javalangreflectParameterizedType;

public class GT1 extends GT2<Integer>{

public static void main(String[] args) {

Systemoutprintln(((ParameterizedType)new GT1()getClass()getGenericSuperclass()));

}

}

则输出结果即为:

GT2<javalangInteger>

如果此Class代表的是Object 类、接口、基本类型或 void,则返回 null。。如果此对象表示一个数组类,则返回表示 Object 类的 Class 对象。

2 public Type[] getGenericInterfaces()

与上面那个方法类似,只不过Java的类可以实现多个接口,所以返回的Type必须用数组来存储。

以上两个方法返回的都是Type对象或数组,在我们的这个话题中,Class都是代表的参数化类型,因此可以将Type对象Cast成ParameterizedType对象。而 ParameterizedType对象有一个方法, getActualTypeArguments()。

public Type[] getActualTypeArguments()

用来返回一个Type对象数组,这个数组代表着这个Type声明中实际使用的类型。接着使用上面的例子:

import javalangreflectParameterizedType;

public class GT1 extends GT2<Integer>{

public static void main(String[] args) {

Systemoutprintln(((ParameterizedType)new GT1()getClass()getGenericSuperclass())getActualTypeArguments()[0]);

}

}

代码 请收下~~~~

<body>

<span class="okdog" lay-id="user1">1只狗</span><span class="okdog" lay-id="user2">2只狗</span><span class="okdog" lay-id="user3">3只狗</span><span class="okdog" lay-id="user4">4只狗</span><span class="okdog" lay-id="user5">5只狗</span>

<div id="showdog">输出结果</div>

<script>

var res = documentgetElementsByClassName('okdog');

for(var i=0;i<reslength;i++){

    res[i]addEventListener('click',function(e){

       alert(esrcElementinnerHTML)

    },false);

}

</script>

</body>

很多朋友都想知道java怎么获取泛型class?下面就一起来了解一下吧~

获取泛型Class的方法

Class类的方法:

public Type getGenericSuperclass()

方法作用:

如果超类是参数化类型,则返回的 Type 对象必须准确反映源代码中所使用的实际类型参数。如果以前未曾创建表示超类的参数化类型,则创建这个类型。有关参数化类型创建过程的语义,请参阅 ParameterizedType 声明。如果此 Class 表示 Object 类、接口、基本类型或 void,则返回 null。如果此对象表示一个数组类,则返回表示 Object 类的 Class 对象。

ParameterizedType类的方法:

Type[] getActualTypeArguments()

方法作用:返回表示此类型实际类型参数的 Type 对象的数组。

注意,在某些情况下,返回的数组为空。如果此类型表示嵌套在参数化类型中的非参数化类型,则会发生这种情况。

二、获取泛型Class对象

(解析Excel的类代码较多,这里定义几个简单的类记录)

定义获取泛型Class对象的工具类

GenericSuperclassUtil

import javalangreflectParameterizedType; import javalangreflectType; public class GenericSuperclassUtil { /  获取泛型类Class对象,不是泛型类则返回null / public static Class  getActualTypeArgument(Class  clazz) { Class  entitiClass = null; Type genericSuperclass = clazzgetGenericSuperclass(); if (genericSuperclass instanceof ParameterizedType) { Type[] actualTypeArguments = ((ParameterizedType) genericSuperclass) getActualTypeArguments(); if (actualTypeArguments != null && actualTypeArgumentslength > 0) { entitiClass = (Class ) actualTypeArguments[0]; } } return entitiClass; } }

定义BaseService ,用来测试不使用父类时泛型Class的获取

BaseService

public class BaseService  { public Class  getEntityClass() { return GenericSuperclassUtilgetActualTypeArgument(thisgetClass()); } }

测试BaseServicegetEntityClass() @Testpublic void testBaseService() { Systemoutprintln(new BaseService ()getEntityClass());// 控制台输出:null }

以上就是关于关于JAVA Entity entity = entityClass.getAnnotation(Entity.class);全部的内容,包括:关于JAVA Entity entity = entityClass.getAnnotation(Entity.class);、java 怎么获取t的class、js获取class对象的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9489520.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存