java反射简单例子

假设有如下类:

package com.test.reflect;

public class Person

{

private int age;

private String name;

public Persion()

{

}

public Persion(String name)

{

this.name = name;

}

public Persion(String name,int age)

{

this(name);

this.age = age;

}

public void setName(String name)

{

this.name = name;

}

public void setAge(int age)

{

this.age = age;

}

@hide

public void setAll(String name,int age)

{

setName(name);

setAge(age);

}

private int getAge()

{

return age;

}

public String getName()

{

return name;

}

}

因为getAge()和setAll()是private方法和@hide注解,平常对象无法进行调用.为了是能使用这两个方法,可通过反射:

public class ReflectDemo

{

public static void main(String[] args) throws Exception

{

//获取类引用

Class class = Class.forName("com.test.reflect.Persion");

//实例化Person对象

// Persion persion = (Persion)class.newInstance();//Persion无参构造函数 

Persion persion = (Persion)class.newInstance("xiaoming",20);

//获取setAll函数

Method setAll = class.getMethod("setAll",String.class,int.class);

//调用setAll函数

setAll.invoke(persion,"xiaohong",18);

//获取getAge函数

Method getAge = class.getMethod("getAge");

//调用getAge函数

int age = (int)getAge.invoke(persion);

System.out.println("name:"+persion.getName()+" age:"+age);

}

}

时间: 2025-01-07 10:41:53

java反射简单例子的相关文章

java反射小例子

package com.txwsqk.reflect; public class Car { private String brand; private String color; private int maxspeed; public Car(){} public Car(String brand, String color, int maxspeed){ this.brand = brand; this.color = color; this.maxspeed = maxspeed; }

java反射简单实现注入

做了好久的java开发 ,却一直没有详细了解java反射机制,后来写项目的时候发现用反射可以少写好多无聊的代码,因此用java反射简单实现注入. java反射的具体细节可参见 这篇博客写的非常详细,点此进入~ 而一般基于业务的编程主要用反射实现将属性动态的注入一个对象中. 以下是方法实现: 1 /** 2 * 根据 传入的map与类名,通过反射实例化对象 3 * @param className 需要实例化的类名 4 * @param map 包含属性的键值对 (String,Object) 5

java memcached 简单例子 使用spymemcached客户端

只是一个简单的例子,没有太多需要解释的. 需要注意的是,如果存对象的话,对象需要实现序列化的接口. 引用了一个jar:spymemcached-2.10.3.jar 直接上代码: 1 package memTest; 2 3 import net.spy.memcached.MemcachedClient; 4 5 6 import java.io.IOException; 7 import java.io.Serializable; 8 import java.net.InetSocketAd

java反射机制例子,反编译,以及通过读取配置文件降低耦合

本文不多做文字描述,通过代码可以说明一切,简单直观. //这边以反编译String类为例子,将反编译结果输入到文件. 1.ReflectTest.java 1 import java.io.File; 2 import java.io.FileReader; 3 import java.io.FileWriter; 4 import java.lang.reflect.Constructor; 5 import java.lang.reflect.Field; 6 import java.lan

Java反射的例子

1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反射甚至可以调用到private的方法 4)生成动态代理 3.实现Java反射的类 1)Class:它表示正在运行的Java应用程序中的类和接口 2)Field:提供有关类或接口的属性信息,以及对它的动态访问权限 3)Constructor:提供关于类的单个构造方法的信息以及对它的访问权限 4)Method:提供关于类或

Java反射-简单应用

为了程序更好的维护和扩展,在面向对象思维的世界里,首先是面向接口编程,然后我们应该把做什么和怎么做进行分离. 下面我将用一个开晚会的例子来演示一下,最终达到的效果是:工厂+反射+配置文件实现程序的灵活应用.会具体说明一下这个过程是怎么来的,明白了这个,就会对反射和配置文件的结合更加深刻一些. 想要实现的功能是:晚会有一个唱歌.舞蹈.小品的节目单,具体各个节目的表演者只需要一个就可以,每一个表演接口都有两个实现类(表演者),通过客户端调用不同的实现类来实现不同的节目单.表演者就是"做什么"

Java反射 - 简单的给Bean赋值和取值

由于项目的实际需要,所以利用java反射原理写了一个简单给bean赋值和取值通用的类,在此记录下方便自己日后用到,也为需要的兄弟提供个参考例子. 工具类BeanRefUtil: [java] view plain copy print? package com.test; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.u

Java反射+简单工厂模式总结

除了 new 之外的创建对象的方法 通过 new 创建对象,会使得程序面向实现编程,先举个例子,某个果园里现在有两种水果,一种是苹果,一种是香蕉,有客户想采摘园子里的水果,要求用get()方法表示即可 一般情况下,最直接的写法为: public class Apple { public void get() { System.out.println("得到苹果"); } }   public class Banana { public void get() { System.out.p

android中引用javascript和在javascript中引用java的简单例子

在android中通过微webView是可以加载javascript代码的,与其说是javascript不如说是加载网页,其实就是html和javascript的结合等,通过html和javascript也可以创建安卓应用,因为android和javascript可以相互调用,下面是我介绍的一个简单的例子,大家可以参考.欢迎和大家一起交流. //允许JavaScript执行 webSettings.setJavaScriptEnabled(true); // 添加一个对象, 让javascrip