学习日记 11 高新(3)反射和静态导入

 

 

反射: 就是java语言在运行时拥有一项自观的能力,把java中的各个成分映射成相应的java类

 

我的理解:万事万物都能用对象表示,那么java中的类也能用对象表示  Class ,

有了对象后,我们就能使用对象的方法调用 成员,方法,变量  这种方式称之为反射

 

class,Constructor,Field,Method;

 

class - 代表对象,

Constructor-类的构造器对象,

Field-类的属性对象,

Method-类的方法对象

 

Class 类:   在计算机中 由0和1组成的 字节码

 

三种得到类对象的途径:
        1.Class.forName(“name”) //输入全类名
        2.object.getClass() //得到该对象的类对象
        3.object.class

 

Class中的各种方法

isPrimitive()

判断是否为基本数据类型boolean、bytecharshortintlongfloatdouble

还有VOID

一共9个

 

 

AccessibleObject 类是 Field、Method 和 Constructor 对象的基类。

它提供了将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。

对于公共成员、默认(打包)访问成员、受保护成员和私有成员,在分别使用 Field、Method 或 Constructor 对象来设置或获取字段、调用方法,

或者创建和初始化类的新实例的时候,会执行访问检查。

 

getpackage()
          获取此类的包。

isArray();

判断是否为数组

 

Constructor类

得到某个类所有的构造方法

例子

Constructor[] constructor = Class.forName("java.lang.String").getConstructors();

得到某一个构造方法

例子

Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);

创建实例对象

通常方法: String str = new String(new String StringBuffer("abc"));

 

反射方法:String str =(String) constructor.newInstance(new StringBuffer.class);

 

java中 构造方法没有顺序

 

Constructor  constructor1=String.class.getConstructor(StringBuffer.class);

constructor1.newInstance(initargs);

 

Constructor  constructor1=String.class.getConstructor(StringBuffer.class);

是选择StringBuffer.class   获取方法

 

用构造方法自己所属的类.方法

newInstance(initargs)  去构造出实例对象

这个方法可以调用很多次

 

Field

可见的用getField  不可见的 用getDeckaredField

 

Field[] fields = obj.getClass().getFields();

for(Field field : fields)

{

String oldValue = (String)field.get(obj);

String newValue = oldValue.replace('b','a');

field.set(obj.newValue);

}

 

 

 

 

 

使用静态导入的好处:提高编写代码的效率。

JKD1.5后新加的功能

如果在源文件的顶部,添加一条指令

import static java.math.*;

那么就可以使用math类的静态方法和静态域,而不必加类名前缀

 

例子:
没有静态导入
Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
 
静态导入
 
import static java.lang.Math.*;
 
sqrt(pow(x, 2) + pow(y, 2));
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值