文档章节

java反射机制

浮躁的码农
 浮躁的码农
发布于 2015/07/30 09:36
字数 710
阅读 70
收藏 1

java反射机制

一、

1、了解反射的作用

2、掌握Class类的操作及使用

3、可以通过反射取得一个类的实例化对象

4、可以通过反射取得类的结构,可以通过反射进行属性方法的调用

二、认识反射

Java反射机制就好像是一面镜子,照镜子可以发现自己的所有的特征,一个类可以通过反射(照镜子)发现自己的所有的方法。

反射机制在框架上面运用的尤其多!(怎么应用的?)


比如,javascript就是动态语言,有如下代码:

Var  a=1;

a=”weiwei”;

a=false;

由这三行代码可知:a可以在运行时动态的改变,由int类型改为字符串类型,又由字符串类型变为boolean类型,即在程序运行时,允许改变程序结构或变量类型,这就是动态语言。而java、C++等式不允许这样的如果a是int类型,就不能随便改动了。所以说java是静态语言。

解释:Class.forName("org.lxh.demo.classdemo02.Person")。//程序在编译的时候并不知道org.lxh.demo.classdemo02.Person是一个person类,只知道它是一个字符窜,只有在程序运行的时候才知道是个person类,即我们可以与运行时加载、探知、使用编译期间完全未知的classes。


如下所以:运用getDeclaredMethods()方法,可以知道一个已知名称的类中有哪些方法的申明,包括私有方法。


正常情况下,一个类要想使用,则必须找到此类,然后通过此类实例化一个对象,必须先有类再有对象,那么现在如果想通过一个对象找到其所在的类呢?

三、认识Class

    在反射机制中,Class类是一个操作的源头,所有的反射操作从此类展开,但是如果想实例化此类的对象,可以通过三种方式;

1、        Object类的getClass()方法

2、        通过类Class的形式,如:Person.class(第二常用)

3、        Class.forName()(最常用)

 

四、通过Class类实例化对象

Class类的使用中,实例化对象是最常用的一种操作,而且日后所有框架的各个程序的实现原理都是依靠Class类完成的。

1、        实例化无参构造的类

如果一个类中存在无参的构造方法,那么就可以直接通过Class类进行实例化操作。

现有如下代码:

步骤:1、获取class对象

       2、生产类的实例

package org.lxh.demo.classdemo02;
public class Person {
	public String toString() {
		return "hello world!!!";
	}
}
public class InstanceDemo01 {
public static void main(String[] args) {
		Class<?> c = null;
		try {
			c = Class.forName("org.lxh.demo.classdemo02.Person");//先实例化对象
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		try {
			Person p = (Person) c.newInstance();//创建对象
			System.out.println(p);
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
	}
}





© 著作权归作者所有

上一篇: OpenTSDB 概述
浮躁的码农

浮躁的码农

粉丝 77
博文 933
码字总数 194766
作品 0
松江
程序员
私信 提问
Android 4.4(KK)中利用APP打开关闭数据流量

在Android 4.4中,在app中打开或关闭数据流量 如果有这方面需求可以参考。 思路 利用JAVA的反射机制(Reflection),来调用CONNECTIVITY_SERVICE完成相关操作。 关于JAVA的反射机制,可以参考...

W_X
2014/12/17
786
4
最最最常见的Java面试题总结——第二周

String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性   String类中使用字符数组:保存字符串,所以String对象是...

Amsour丶
2018/08/13
0
0
【免费】全网独家:详解Java反射机制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/silencezwm/article/details/85115991 【免费】全网独家:这是一份非常值得珍藏的Android知识体系!!! 本文...

silencezwm
2018/12/20
0
0
黑马程序员--JDK1.5新特性(二)

----------------------android培训、java培训、期待与您交流!---------------------- Java反射机制定义: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性、方法...

长平狐
2013/07/01
63
0
云妹总结了一些最最最常见的Java面试题供大家参考

云妹导读:String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性 String类中使用字符数组:private final cha...

阿里云科技快讯
2018/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

对比ubuntu与centos系统 ​​​​

CentOS与Ubuntu该如何选择,哪个更好用。笔者在自媒体平台收集了一些网友的观点,较为经典,分享给大家。至于应该选择哪个,希望看完本文章后,读者心中有数。 观点1:CentOS适用于服务器,U...

老孟的Linux私房菜
今天
12
0
Java的基本类型

一、Java的基本类型 Java的基本类型有哪些? boolean char byte short int long float double ? 延伸思考 思考一:为什么有的书籍说Java存在第9种数据类型? 实际上,JAVA中还存在另外一种基...

yumoop
今天
14
0
OSChina 周四乱弹 —— 富婆小时候

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @猿敲月下码 :#今日歌曲推荐# 分享陈慧娴的单曲《夜机》 《夜机》- 陈慧娴 手机党少年们想听歌,请使劲儿戳(这里) @開源中國張學友 :早上...

小小编辑
今天
24
0
MyMinimad ── Linux下用libmad写的mp3解码播放程序(四)

优化了内存使用,不再使用mmap映射整个文件到内存 /* * 本程序是从 minimad 改进而来,如要更详细的说明请参看 minimad.c * * Gu Zhou, 2009/12/25, SiChuan University, China *...

代码强国
今天
18
0
Minikube安装

1、下载Minikube二进制文件 sudo curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64 2、设置权限 sudo chmod +x minikube......

RogueQ
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部