黑马程序员——反射及包
来源:互联网 发布:fastboot进入软件 编辑:程序博客网 时间:2024/05/18 03:57
<a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>
反射:不仅把java类的字节码封装成Class类,而且把字节码的相关成员也封装成相应的类
步骤:
(1) 获取Class对象
(2) 实例化对象,获取类的属性、方法或构造函数
(3) 访问属性、调用方法、调用构造函数创建对象
1、 获取Class类的对象
1) 类名.class
2) 对象.getClass()
3) Class.forName(“java.lang.String”) //类加载器把字节码缓存到JVM
在程序中出现的数据类型,都有各自的class实例对象
例1:
int.class==Integer.TYPE //true 包装类的基本类型的字节码
int.class==Integer.class //false 包装类的字节码
例2:
String str=newString()
Class class=String.class
Classclass=str.getClass()
Class class= Class.forName(“java.lang.String”)
2、 实例化对象
1) 成员变量
Field[] field=class.getFields() //获取所有成员变量
Field field1=class.getDeclaredField(成员变量名) //得到具体某个成员变量
field1.setAccessible(true) //暴力破解使其值被调用
field1.get(对象) //给field1赋值
field1.getType() //得到成员变量的的类型
2) 构造函数
Constructor[] constructor= class.getConstructors()
Constructor constructor= class.getConstructor(参数字节码)
//通过某个构造方法得到构造器实例
constructor.newInstance(参数字节码)
//传具体参数类型,创建类实例
3) 方法
Method method =class.getMethod(方法名,参数字节码)
method.invoke(对象,要传进方法的参数)
3、 一个框架实例
//配置文件config.properties中内容className=java.lang.ArrayList
InputStream ips = newFileIputStream(“config.properties”);
Properties props =new Properties();
props.load(ips);
ips.close();
String className = props.getProperty(“className”);
Collection collection =Class.forName(className).newInstance();
//可以改变配置文件来改变你创建的Collection实例
包
名称所有字母小写
类内容不同名称相同,就需要包来加以区分
(1) 对类文件分类管理
(2) 写在程序第一行
(3) 包也是一种封装形式
(4) 类名全称:包名.类名
编译:
javac –d c:java 类名.java //–d c:java是指定包存放的目录
运行:
set classpath=.;–d c:java
不同包中类的访问:
被访问包中的类和成员要public修饰
不同包子类可访问被protect修饰的父类
类修饰符:两种public protected
修饰符作用范围
private:本类
defaut:本类、本包
protected:本类、本包、其子类
public:全部
- 黑马程序员——反射及包
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员——反射及实现方法
- 黑马程序员—反射的机制及应用1
- 黑马程序员—反射机制及应用2
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- 黑马程序员——反射
- VS 服务无法启动
- Tomcat和Solr的整合
- Android打包的那些事
- 2015年11月11日--11月20日(27小时,剩3323小时)
- 信庭嵌入式工作室-ARM应用技术之体系结构应用(中)
- 黑马程序员——反射及包
- jquery实现悬浮栏上下滑动点击
- Block 块语法
- 基于IOC的GUI框架设计与实现
- struts2下的helloworld(如何让第一个struts2跑起来)——struts2第一讲
- 使用Strust2框架写HelloWorld
- 实战struts2——用户登录
- action和servlet的关系
- java常量池简单使用