java 反射 type_java 反射 通俗易懂

笔主也是很长时间没有理解反射的概念;突然灵光一闪,理解一点,喜欢可以帮助大家;

首先我们建立一个person类

public class Person {

String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

//包含一个带参的构造器和一个不带参的构造器

public Person(String name, int age) {

super();

this.name = name;

this.age = age;

}

public Person() {

super();

}

}

再建立一个测试类

public class test {

public static void main(String[] args) {

Class clazz = Person.class;

Field[] fields = clazz.getDeclaredFields();

Method[] declaredMethods = clazz.getDeclaredMethods();

Constructor[] constructors = clazz.getConstructors();

System.out.println(); //插入断点

}

}

运行结果

8fb660b1cd9bfdedd42ae5090067fb10.png

这就是反射。。。

可能会问,这个有什么用

一般的业务开发,我们很少要用到反射

1、反射的好处是:可以在运行时确认对象以及方法。

2、下面举个简单的例子来说下反射的运用场景:

假如一款游戏有一个配置文件,配置文件里有个renderType设置了游戏启动时调用哪个RenderHandler来渲染游戏,

(RenderHandler:一个接口,有一个render方法,HighRenderHandler、LowRenderHandler、MiddleRenderHandler等一共10个实现类)

那么游戏启动时必须获得一个RenderHandler来渲染游戏,现在有两种方式,一种是使用switch判断

1 //首先获得配置文件里的renderType

2 switch(renderType){

3 case "low":renderHandler=new LowRenderHandler();

4 case "high":renderHandler=new HighRenderHandler();

5 case "middle":renderHandler=new MiddleRenderHandler();

6 case "a":renderHandler=new ARenderHandler();

7 case "b":renderHandler=new BRenderHandler();

8 case "c":renderHandler=new CRenderHandler();

9 case "d":renderHandler=new DRenderHandler();

10 case "e":renderHandler=new ERenderHandler();

11 case "f":renderHandler=new FRenderHandler();

12 case "g":renderHandler=new GRenderHandler();

13 default:renderHandler=new LowRenderHandler();

14 }

15 renderHandler.render();

另一种是使用反射:

1 //首先从配置文件里获得renderType

2 RendeHandler renderHandler=(RendeHandler)Class.forName(rederType).newInstance();

3 renderHandler.render();

3、switch用了14行代码,而反射只使用了2行代码,现实中可能见不到这么傻的例子,但是这确实有助于理解反射。

参考链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值