Java反射一 类
来源:互联网 发布:黑帽seo技术到哪里学 编辑:程序博客网 时间:2024/05/17 05:19
Java反射一 类
以前也看过反射,但是那时候还是一个小白(现在是一个菜鸟),没有接触过什么框架,根本不知道反射有什么作用。但是接触了不少框架之后,就想了解下反射,所以接着会研究下反射。
在java的官方教程中包括了三个部分。
- 类:多种方式获取一个Class对象并用它来测试类的属性
- 成员变量:用反射api获取类的变量、方法、构造函数
- 数组和枚举类型:介绍两种特殊的类:数组和枚举。
首先先介绍获取Class对象。虚拟机会给每个对象实例化一个Class对象来检测运行时属性,包括了成员和类型信息。Class还可以创建新类和新的对象。最重要的是这是反射api的入口。
获取Class对象有很多途径:
1 对象.getClass(),调用一个对象的getClass()方法可以获取到Class对象。
/* * 获取Class对象方法一:对象.getClass() */ // 返回String的class Class c = "foo".getClass(); System.out.println(c); // Class c1 = System.out.getClass(); System.out.println(c1); Class c2 = E.A.getClass(); System.out.println(c2); byte[] bytes = new byte[1024]; Class c3 = bytes.getClass(); System.out.println(c3);
2 类.class就可以获取该类的Class对象。
/* * 获取Class对象方法二:类.class */ Class c4 = boolean.class; // correct System.out.println(c4); Class c5 = java.io.PrintStream.class; System.out.println(c5); Class c6 = int[][][].class; System.out.println(c6);
3 Class.forName(String xx)。xx一定要是完全限定名,而且原生变量不能使用这种语法。
/* * 获取Class对象方法二:class.forName */ Class c7 = Class.forName("[[Ljava.lang.String;"); System.out.println(c7);
4 原生类型的包装类可以使用 .Type来获取对应的原生类型
/* * 原生类型的包装类 :类.Type */ Class c8 = Double.TYPE; System.out.println(c8); Class c9 = Void.TYPE; System.out.println(c9);
5 还有几个方法获取Class对象
// 返回父类 Class c10 = javax.swing.JButton.class.getSuperclass(); System.out.println(c10); // 返回公开的成员内部类,接口或者是枚举 Class<?>[] c11 = Character.class.getClasses(); for (Class<?> class1 : c11) { System.out.println("-----" + class1); } // 返回申明的成员内部类,接口或者是枚举 Class<?>[] c12 = Character.class.getDeclaredClasses(); for (Class<?> class1 : c12) { System.out.println("-----" + class1); } //获取申明该变量的类 Field f = System.class.getField("out"); Class c13 = f.getDeclaringClass(); System.out.println( c13); //返回包裹该类的类 Class c14 = Thread.State.class.getEnclosingClass(); System.out.println( c14);
获取Class对象的方法基本就这些。
由于jekyll的环境非常难维护,所以转转阵营了,blog换为Hexo的了,而且换了主题。博客的地址是http://www.lushunming.com.cn ,我的博客中的排版更为美观,欢迎大家去看我的博客,也可以用邮箱订阅。
0 0
- Java反射一 类
- Java--类反射(一)
- java 反射 一 Class类
- java--类反射(一)
- java反射(一):反射基础
- Java反射(一):获取类的反射
- Java反射(一)Class类对象
- Java之------类反射系列(一)
- Java反射机制(一)
- Java反射机制一
- java反射一
- java反射详解 (一)
- java反射学习一
- Java反射笔记一
- Java反射一例
- java反射机制 一
- JAVA反射机制(一)
- Java反射(一)
- JQuery快速学二(DOM操作)
- 引用
- 【android】:android里面的intent的action详解
- 【CodeForces】669A - Little Artem and Presents(找规律)
- 【SVN Working copy is too old (format 10, created by Subversion 1.6)】解决方案
- Java反射一 类
- xcode自定义编写插件----改变c++/c注释风格
- JQuery快速学三之一(事件)
- ajax异步处理echarts图形
- iOS开发之NSUserDefault详解
- 超越整理的nginx配置文件详细说明
- codeforces Round #354 (Div. 2) A
- ANC 芯片 3435
- gmail smtp 535 5.7.8无法登陆解决