文档章节

使用反射调用方法

学而时习之
 学而时习之
发布于 2015/03/02 16:26
字数 459
阅读 19
收藏 0
点赞 0
评论 0

1、实体类

package com.ljb.app.model;

import java.io.Serializable;

/**
 * 序列化实体类
 * @author  LJB
 * @version  2015年2月10日
 */
public class Student implements Serializable{
 private String name;
 private int age;
 private String gender;
 private transient String password;
 
 public Student () {};
 
 public Student(String name, int age, String gender , String password) {
  super();
  this.name = name;
  this.age = age;
  this.gender = gender;
  this.password = password;
 }

 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 String getGender() {
  return gender;
 }

 public void setGender(String gender) {
  this.gender = gender;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 @Override
 public String toString() {
  return "Student [name=" + name + ", age=" + age + ", gender=" + gender
    + "]";
 }
}

2、调用get方法

package com.ljb.app.my_first_maven;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import com.ljb.app.model.Student;

/**
 * 利用反射调用方法
 * @author  LJB
 * @version  2015年3月2日
 */
public class MethodCallTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // 创建实例对象
  Student stu = new Student();
  stu.setName("张三");
  
  // 利用反射调用get方法
  Class cla = Student.class;
  
  try {
   // 获取名称为getName的方法
   Method meth = cla.getMethod("getName", null);
   
   // 调用指定对象的该方法,获取name值
   try {
    String name = (String) meth.invoke(stu, null);
    
    System.out.println(name);
   } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  } catch (SecurityException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (NoSuchMethodException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  

 }

}

运行结果:张三

3、调用set方法

package com.ljb.app.my_first_maven;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import com.ljb.app.model.Student;

/**
 * 利用反射调用方法
 * @author LJB
 * @version 2015年3月2日
 */
public class MethodCallTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // 创建实例对象
  Student stu = new Student();
  stu.setName("张三");
  
  // 获取Class类对象

  Class cla = Student.class;
    
  // 利用反射调用set方法
  try {
   // 获取方法
   Method setMeth = cla.getMethod("setName", String.class);
   
   // 调用方法,传入参数
   setMeth.invoke(stu, "李四");
   
   String name = stu.getName();
   System.out.println(name);
  } catch (IllegalArgumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SecurityException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (NoSuchMethodException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

}

运行结果:李四
4、如果是private方法

使用setAccessible(Boolean flag)

true 为取消权限; false 为实施权限检查

 

© 著作权归作者所有

共有 人打赏支持
学而时习之
粉丝 29
博文 92
码字总数 42877
作品 0
西安
c#中的反射机制

反射的概述: 反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义...

云栖希望。 ⋅ 2017/12/04 ⋅ 0

Java反射知识总结(2)——阅读

上一部分介绍了反射的一些基本内容,现在将利用反射完成更多的事情。 一、 Field类 Field类封装了属性的信息,一个Field类封装了一个属性的信息,类似于Method对象封装了方法的信息一样。那么...

关河 ⋅ 2016/01/20 ⋅ 0

Java中的反射|SquirrelNote

前言 本篇简介: 反射概述 反射具体功能实现 Android中的反射应用 一、反射(Reflection)概述 1.定义 是指在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;并且对于任何一个...

跳动的松鼠 ⋅ 2017/11/28 ⋅ 0

Java基础之反射

image 前言 所谓工欲善其事必先利其器,只有把脚下的每一步走好,才能走的更远,只有把地基打的牢固,才能盖的更高。今天我来给大家讲讲java中的反射,如有错误请指出。 概述 反射(Reflect...

努力的右先生 ⋅ 2017/11/07 ⋅ 0

java 通过反射获取调用类方法及属性

首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做这些事,一般...

jiuwanbq5 ⋅ 2016/03/08 ⋅ 0

Java反射教程

本文为转载学习 原文链接: Programcreek 翻译: ImportNew.com - 薄荷脑 译文链接: http://www.importnew.com/9078.html 1. 什么是反射? “反射(Reflection)能够让运行于JVM中的程序检测...

heroShane ⋅ 2014/01/28 ⋅ 0

Java反射机制详解上篇

1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的...

xinsz08 ⋅ 2017/07/13 ⋅ 0

Java基础之反射(非常重要)

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道...

Java-老刘 ⋅ 05/15 ⋅ 0

php 反射类简介

反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复 杂,可扩展的应用。其用途如:自动加载插件,自动生成文档,甚至可用来扩充 PHP 语言。php 反射api 由若干类组成,...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Java基础巩固笔记(1)-反射

Contents java基础巩固笔记(1)-反射 反射基本使用 数组的反射 配置文件加载 内省(Instropector) & JavaBean 反射:将类的属性和方法映射成相应的类。 反射基本使用 获取Class类的三种方法: 类...

卟想苌亣 ⋅ 2017/11/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【elasticsearch】 随笔 Date datatype

一。时间类型的本质 首先json是没有时间类型的,对于es来说,时间类型的标示可以是下面三种情况 1.一个时间格式的字符串,如:"2014-11-27T08:05:32Z","2015-01-01" or "2015/01/01 12:10:3...

xiaomin0322 ⋅ 28分钟前 ⋅ 0

阿里云资源编排ROS使用教程

阿里云资源编排ROS详细内容: 阿里云资源编排ROS使用教程 资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、...

mcy0425 ⋅ 30分钟前 ⋅ 0

适配器设计模式

1、适配器模式 把一个类的接口变换成客户端所期待的另一种接口 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 分为类的适配器模式和对象的适配器模式 2、类适配器模式 类的适配...

职业搬砖20年 ⋅ 34分钟前 ⋅ 0

npm操作报错 _stream_writable.js:61

有一天 不知道什么原因(估计和node的版本有关),无论你做什么npm的操作 都会报错/usr/local/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_writable.js:61 这时候只要执...

lilugirl ⋅ 38分钟前 ⋅ 0

Eclipse安装插件的几种方式

Eclipse魅力之一就是支持可扩展的插件,来丰富自身的功能,这种方式也是建立在开源思想之上的。具体使用什么方式去安装插件,要看我们拿到的是什么。 1. 拿到的是一串URL,如http://subclips...

GordonNemo ⋅ 40分钟前 ⋅ 0

div图片叠加

css实现代码如下: <div style="position: relative;"><!--这个层为外面的父层,需设置相对位置样式--> <div style="position: absolute;"><!--子层,需设置绝对位置样式--> <i......

niithub ⋅ 42分钟前 ⋅ 0

作用域slot

如果父组件需要使用子组件中的内容怎么办,比如父组件需要控制子组件的显示 <div id="root"><child><template slot-scope="props"><h1>{{props.item}} <div>编辑</div></h1><......

金于虎 ⋅ 44分钟前 ⋅ 1

HongHu commonservice-eureka 项目构建过程

上一篇我们回顾了关于 spring cloud eureka的相关基础知识,现在我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家...

明理萝 ⋅ 47分钟前 ⋅ 1

xml和对象的相互转化

@Data//setter和getter方法,toString和equals,hashcode方法@EqualsAndHashCode//代表重写equals和hashcode方法@XmlAccessorType(XmlAccessType.FIELD)public class Classroom {@X......

拐美人 ⋅ 48分钟前 ⋅ 0

tableView cell的高度 分组头部尾部的高度 自适应

@property (nonatomic) CGFloat rowHeight; // default is UITableViewAutomaticDimension@property (nonatomic) CGFloat sectionHeaderHeight; // default is UITableViewA......

娜一片蓝色星海 ⋅ 49分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部