比如有个类 public class Test { //两个实例变量 public String field1; public String field2; //构造函数 public Test(String arg1,String arg2) { filed1 = arg1; filed2 = arg2; } public static void main(String []args) { //新建两个Test类的对象 Test test1 = new Test("1","2"); Test test2 = new Test("1","4"); //比较两个对象的方法,返回比较后的差异(比如:字段filed2,原值是2,新值是4) String result = //比较方法(test1,test2); } }
public class Test
{
//两个实例变量
public String field1;
public String field2; //构造函数
public Test(String arg1,String arg2)
{
filed1 = arg1;
filed2 = arg2;
} public static void main(String []args)
{
//新建两个Test类的对象
Test test1 = new Test("1","2");
Test test2 = new Test("1","4"); //比较两个对象的方法,返回比较后的差异(比如:字段filed2,原值是2,新值是4)
String result = //比较方法(test1,test2);
}
}
/**
* 创建日期:2005-12-28
*/
package net.Yzl.spring.qs;文件一
/**
* @author Yzl
*
*/
public interface Action {
public String execute(String str);}文件二
/**
* 创建日期;2005-12-28
*
*/
package net.Yzl.spring.qs;import java.lang.reflect.*;
/**
* @author Yzl
*
*/
public class LowerAction implements Action
{
private String message;
public String getMessage()
{
return message;
} public void setMessage(String message)
{
this.message = message;
} public String execute(String str)
{
return (getMessage() + str).toLowerCase();
}
public static void main(String[] args)
{
try {
// 可以将UpperAction 改为LowerAction 其他接口均可不变
Class cls = Class.forName("net.Yzl.spring.qs.LowerAction");
Method mtd = cls.getMethod("setMessage",new Class[]{String.class});
Object obj = cls.newInstance();
mtd.invoke(obj,new Object[]{"Hello "});
mtd = cls.getMethod("execute",new Class[]{String.class});
//System.out.println(((LowerAction)obj).execute("Yzl"));
System.out.println(mtd.invoke(obj,new Object[]{"Yzl"}));
}catch(ClassNotFoundException e)
{
e.printStackTrace();
}catch(NoSuchMethodException e)
{
e.printStackTrace();
}catch(Exception e)
{
e.printStackTrace();
}
}}PS:UpperAction 和 LowerAction 相似,只不过execute函数输出大写字母上面只是简单示例了设置和调用出Bean成员变量的值,至于隐射出类中的其他函数,可以看看文档
private int i;
private String s;
public Compare(int i, String s){
this.i = i;
this.s = s;
}
public static String compareTwoOjb(Object o1, Object o2)
throws IllegalAccessException{
String sValue = "";
//不是同一类型
if(!(o1.getClass() == o2.getClass())){
return "Tow Object is not same type";
}
//同一类型但值相同
if(o1.equals(o2)){
return null;
}
Field[] fields = o1.getClass().getDeclaredFields();
for(int i = 0; i < fields.length; i++){
//设为可访问的
fields[i].setAccessible(true);
if(!fields[i].get(o1).equals(fields[i].get(o2))){
sValue = "[ojb1." + fields[i].getName() + " = "
+ fields[i].get(o1) + ", obj2." + fields[i].getName()
+ " = " + fields[i].get(o2) + "]";
}
}
return sValue;
}
public static void main(String[] args){
try{
String str = compareTwoOjb(new Compare(1, "11"), new Compare(1, "22"));
System.out.println(str);
}catch(Exception e){
e.printStackTrace();
}
}
}