--------------TestBean
package lh.demo.bean;
public class TestBean {
 private String userName;
 private String password;
 private String age;
 public TestBean (){
 }
 public TestBean (String _userName,String _password,String _age){
  this.userName = _userName;
  this.password = _password;
  this.age = _age;
 }
 public String getUserName() {
  return userName;
 }
 public void setUserName(String userName) {
  this.userName = userName;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getAge() {
  return age;
 }
 public void setAge(String age) {
  this.age = age;
 }
 public void print(String str){
  System.out.println("不是static : "+str);
 }
 private void privateprint(String str){
  System.out.println("private : "+str);
 }
 
 public static void staticprint(String str){
  System.out.println("static : "+str);
 }
 public String toString(){
  System.out.println(this.userName+","+this.password+","+this.age);
  return this.userName+","+this.password+","+this.age;
 } } 
--------------------------------

package lh.demo.test;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import lh.demo.bean.TestBean;

public class Reflect {
// 1怎样得到各个字节码相应的实例对象?

// 1)Class.forName("类的全路径") 推荐
// Class<?

> bean = Class.forName("lh.demo.bean.TestBean");

// 2)对象.getClass()
// Class<?> bean = new TestBean().getClass();
// 3)类名.class
// Class<?> bean = lh.demo.bean.TestBean.class;
 

// 2创建实例对象:
// 通常方式: TestBean bean = new TestBean("lisi","111","22");
// 反射方式:
// 1)已知类名
// TestBean testBean = (TestBean)bean.newInstance();
// 2)未知类名
// Object object = bean.newInstance();
 
// 3.Constructor类(java.lang.reflect)
// 代表类中的构造方法
//
// 1)得到某个类的构造方法:
// Class类的实例.getConstructors()
// Class<?> bean = Class.forName("lh.demo.bean.TestBean");
// Constructor[] con = bean.getConstructors();
// Object o1 = con[0].newInstance();
// Method method1 = bean.getMethod("toString",null);
// method1.invoke(o1, null);
// Object o2 = con[1].newInstance("lisi","111","22");
// Method method2 = bean.getMethod("toString",null);
// method2.invoke(o2, null);
 
// Class类的实例.getConstructor(Class... parmTypes)
// Class<?> bean = Class.forName("lh.demo.bean.TestBean");
// Constructor con = bean.getConstructor(String.class,String.class,String.class);
// Object b = con.newInstance("aaa","111","22");
 
// Class类的实例.getDeclaredConstructor(Class... parmTypes)
// 私有
 
// 4.Field类(java.lang.reflect)
// 代表类中的成员变量
// 1)得到某个类的成员变量:
// Class类的实例.getDeclaredFields()
// Class<?

> bean = Class.forName("lh.demo.bean.TestBean");

// Object o = bean.newInstance();
// Field[] fields = bean.getDeclaredFields();
// for(Field f:fields){
// System.out.println(f.getName());
// }
// Class类的实例.getFields()
// Class类的实例.getDeclaredField(变量名)
// Class<?> bean = Class.forName("lh.demo.bean.TestBean");
// Object o = bean.newInstance();
// Field age = bean.getDeclaredField("age");
// age.setAccessible(true);
// age.set(o,"23");
// System.out.println(age.get(o));
// Class类的实例.getField(变量名)
 
// 5.Method类
// 代表类中的成员方法
// 1)得到某个类的成员方法:
// Class类的实例.getDeclaredMethods()
// 得到本类的全部方法(public,protected,private)继承的,不包含子类的
// Class类的实例.getMethods()
// 得到全部的方法包含子类的,父类的(public)
// Class类的实例.getDeclaredMethod(方法名,Class... 參数类型)
// Method method = bean.getDeclaredMethod("privateprint", String.class);
// method.setAccessible(true); //私有方法
 
// Class类的实例.getMethod(方法名,Class... 參数类型)
// Method method = bean.getMethod("print", String.class);
// 差别:
// public Method[] getMethods()返回某个类的全部公用(public)方法包含其继承类的公用方法,当然也包含它所实现接口的方法。

// public Method[] getDeclaredMethods()对象表示的类或接口声明的全部方法。包含公共、保护、默认(包)訪问和私有方法,但不包含继承的方法。当然也包含它所实现接口的方法。


// 2)方法调用:
// 反射的方式:method.invoke(对象,Object... 參数值);
// //非静态调用方法
// Object o3 = method.invoke(null,"aaa");
// //静态
// Object o2 = method.invoke(obj,"aaa");
 

 public static void main(String[] args) {
  try {
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

java reflect反思总结的更多相关文章

  1. java reflect 初始学习 动态加载类

    首先要理解Class类: 在java 的反射中,Class.forName("com.lilin.Office") 使用类的全名,这样获取,不仅仅表示了类的类类型,同时还代表着类的 ...

  2. Java反射学习(java reflect)(二)

    ok之前说了Java的反射和反射分析类,那这些东西有神马作用呢,下面就来说应用: 三.运行时使用反射分析对象 简单写一个Employee类,然后利用JAVA反射去取name域,getDeclareFi ...

  3. Java反射学习(java reflect)(一)

    具有能够分析类能力的程序被称为反射,使用反射库可以编写能够动态操纵Java代码的程序. 一.开始 背景:Java运行时系统始终对所有对象维护一个被称为Runtime的类型标识,然后这货save着每个对 ...

  4. java reflect反射调用方法invoke

    类定义 package Reflect; public class MyTest { public int a; public static int b; public static final in ...

  5. java reflect反射获取方法变量参数

    类的成员包含变量(Field),方法(Method),构造器(Constructor) 类定义 package Reflect; public class MyTest { public int a; ...

  6. Java reflect 反射学习笔记

    1. class 类的使用 万事万物皆对象 (基本数据类型, 静态成员不是面向对象), 所以我们创建的每一个类都是对象, 即类本身是java.lang.Class类的实例对象, 但是这些对象不需要 n ...

  7. Java Reflect

    Method method=demo.getMethod("sayChina");             method.invoke(demo.newInstance());   ...

  8. java reflect反射---Java高级开发必须懂的

    理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助.  一.Class类的使用         1.万事万物皆对象,( ...

  9. Java —— Reflect反射机制

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

随机推荐

  1. android面试题 不仅仅是面试是一个很好的学习

    下面的问题是在网上找到的总结,感谢您分享!希望,我们的共同进步,找到自己心仪的公司,: 1.android dvm 流程和Linux这个过程.无论是应用程序对同一概念: 答案:dvm是dalivk虚拟 ...

  2. web服务器配置方法

    Web服务器概述 Web服务器又称为WWW服务器,它是放置一般网站的服务器.一台Web服务器上可以建立多个网站,各网站的拥有者只需要把做好的网页和相关文件放置在Web服务器的网站中,其它用户就可以用浏 ...

  3. ThinkPhp学习01

    原文:ThinkPhp学习01 一.ThinkPHP的介绍           MVC  M - Model 模型                工作:负责数据的操作  V - View  视图(模板 ...

  4. Core Data 和 sqlite3的性能对比【图】3gs,iPhone4,4s,5的性能测试。

    demo 和源码再此下载  :http://download.csdn.net/detail/hherima/5603797

  5. 《powershell 的版本号所引起的载入 FSharp 编译器问题》基本解决

    <powershell 的版本号所引起的载入 FSharp 编译器问题>基本解决 1.FSharp.Core.dll.不光要 Add-Type,还要在编译中引用.可是,在 VS2012 的 ...

  6. MariaDb数据库管理系统学习(二)使用HeidiSQL数据库图形化界面管理工具

    HeidiSQL 是一款用于简单化的 MySQL server和数据库管理的图形化界面.该软件同意你浏览你的数据库,管理表,浏览和编辑记录,管理用户权限等等.此外,你能够从文本文件导入数据,执行 SQ ...

  7. [Android学习笔记]Android Library Project的使用

    RT http://developer.android.com/tools/projects/index.html

  8. MSA2312 enclosure 闪断后

    故障描述:由于电源原因,导致整个扩展柜闪断,硬盘全部为leftover状态. 存储划分配置:之前满配的一套MSA2312,划分为4个vd,后面两个vd无影响,前面2个VD都是一半在1号柜子,一半在2号 ...

  9. 推荐一个IT人必备的东西【用过的都懂,让我们的环境越来越好吧】

    有个东西叫IT人手册,不知道各位有用过吗?不过很可惜以前那个关掉了,那个网站说出了我们IT人太多的新声以及一些黑心公司,不过被迫压力下关闭了 我不是托,我只是分享 我觉得这种东西应该存在下去~!!!至 ...

  10. scala 函数编程

     scala 函数编程  Effective Scala.pdf: http://www.t00y.com/file/76767869 Functional_Programming_in_Scal ...