专业的JAVA编程教程与资源

网站首页 > java教程 正文

尚学堂讲有关Java反射的那些事(java反射如何通俗易懂理解)

temp10 2024-10-12 11:57:00 java教程 15 ℃ 0 评论

反射的概念在 Java中是一个难点,对于刚学习Java的同学来说,不太容易理解,如何更好的掌握反射技术,并学会在实际中应用,需要反复练习和研究,尚学堂小编在这里建议大家,在Java培训学习反射过程中不要心急,老话说心急吃不了热豆腐,吃透反射的概念那是迟早的事。

什么是反射?

尚学堂讲有关Java反射的那些事(java反射如何通俗易懂理解)

Java 反射是可以让我们在运行时获取类的方法、属性、父类、接口等类的内部信息的机制。也就是说,反射本质上是一个“反着来”的过程。我们通过new创建一个类的实例时,实际上是由Java虚拟机根据这个类的Class对象在运行时构建出来的,而反射是通过一个类的Class对象来获取它的定义信息,从而我们可以访问到它的属性、方法,知道这个类的父类、实现了哪些接口等信息。

一、实体类

package com.beijng.dasenlin.bean;

/**

* 写一个实体类,

* @author Administrator

*

*/

public class User {

private int id;

private String name;

private int age;

/**

* 無產的構造方法

*/

public User(){

}

/**

* 通過他們來獲取

* @param id

* @param name

* @param age

*/

public User(int id, String name, int age) {

super();

this.id = id;

this.name = name;

this.age = age;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

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;

}

}

二、通过反射调用方法,避免编译时异常

sysUser = MainJFrame.getSysUser();

2 Class[] paramObj = {String.class, long.class, String.class, String.class, int.class};

//判断方法是否存在

3 boolean isExist = CommonUtil.judgeMethodIsExist(sysUser, "createBucket", paramObj);

4 if (isExist) {

5 try {

//通过反射调用方法

6 Class clazz = sysUser.getClass();

//方法名称--方法中参数的类型(按参数顺序)

7 Method createBucket = clazz.getDeclaredMethod("createBucket",String.class, long.class, String.class, String.class, int.class);

8 int create = (int) createBucket.invoke(sysUser,bucketName, Long.parseLong(bucketSize), bucketLoc, bucketAcl, Integer.parseInt(StringUtil.emptyToZero(bucketCycle)));

9 if (create == 1) {

10 CommonUtil.showInfo("Bucket创建成功");

11 log.info("Bucket创建成功");

12 } else {

13 CommonUtil.showWarnInfo("Bucket创建失败,服务器内部错误!");

14 log.info("Bucket创建失败,服务器内部错误");

15 }

16 } catch (Exception ex) {

17 CommonUtil.showWarnInfo(ex.getMessage());

18 log.error("异常发生在:" + MainJFrame.hostName + ";详细信息为:" + ex.getMessage());

19 }

20 }

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

JAVA反射的再次学习,灵活的运用它,能够使我们的代码更加灵活,但是它也有它的缺点,就是运用它会使我们的软件的性能降低,复杂度增加,所以还要我们慎重的使用它。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表