网站首页 > 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反射的再次学习,灵活的运用它,能够使我们的代码更加灵活,但是它也有它的缺点,就是运用它会使我们的软件的性能降低,复杂度增加,所以还要我们慎重的使用它。
猜你喜欢
- 2024-10-12 java基础之反射,反射API的组成,反射机制的应用场景
- 2024-10-12 Java反射与反射优化(java反射与反射优化的区别)
- 2024-10-12 Java面试手册:反射(java面试反射机制)
- 2024-10-12 如何通过反射获得方法的真实参数名(以及扩展研究)
- 2024-10-12 Java中的反射使用(java 反射使用)
- 2024-10-12 Java面试技术,这31个反射问题你都会嘛?(有答案)
- 2024-10-12 Java反射机制详解(java中的反射机制)
- 2024-10-12 测试开发必须掌握的知识点:Java反射
- 2024-10-12 Java反射机制(Java反射机制主要提供了以下哪些功能)
- 2024-10-12 Java反射注解妙用(获取所有接口说明)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)