package zr.test;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedType;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.net.URL;
import java.security.ProtectionDomain;
import study.core.Reflex;
import study.sqlite3.main.User;
import study.sqlite3.main.User.A;
import zr.annotation.Run;
/**
* java 反射
* @author Administrator
*
*/
public class Javareflex {
public static void main(String[] args) throws Exception {
//----理解class类
@SuppressWarnings("deprecation")
User user = new User();
user.setUserCode("hello");
System.out.println(user.getClass()==User.class);
Class<? extends User> clazz1 = user.getClass();
//转型
// asSubclass 向上转型
Reflex reflex = clazz1.asSubclass(Reflex.class).newInstance();
reflex=clazz1.newInstance();
Object properties = reflex.properties();
// Class<? extends List> asSubclass = clazz1.asSubclass(List.class);
// --判断父类
// cast 向下转型
Object o=user;
User cast = user.getClass().cast(o);//
//desiredAssertionStatus 断言状态
boolean desiredAssertionStatus = clazz1.desiredAssertionStatus();
//通过字符串获取字节码对象
//forName
Class<?> user1 = Class.forName(user.getClass().getName());
System.out.println(user1);
// getAnnotatedInterfaces 注解
boolean annotationPresent = clazz1.isAnnotationPresent(Run.class);
AnnotatedType[] annotatedInterfaces = clazz1.getAnnotatedInterfaces();
AnnotatedType annotatedSuperclass = clazz1.getAnnotatedSuperclass();
Run annotation = clazz1.getAnnotation(Run.class);
Annotation[] annotations = clazz1.getAnnotations();
Run[] annotationsByType = clazz1.getAnnotationsByType(Run.class);
Run declare
java 反射简单总结
最新推荐文章于 2022-04-07 16:26:01 发布
本文主要介绍了Java反射机制的基本概念和使用方法,包括如何通过反射创建对象、获取类信息、访问和修改成员变量以及调用方法。反射是Java动态类型的重要特性,它允许我们在运行时检查类的结构和调用其成员,为程序提供了更大的灵活性。
摘要由CSDN通过智能技术生成