public class Bean {
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
@Column("column1")
private String field;
}
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Column {
String value() default "";
}
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Class<Bean > c=Bean.class;
Field[] fs=c.getDeclaredFields();
for(Field f:fs){
System.out.println(f.getName());
System.out.println(f.isAccessible());
Column ca=f.getAnnotation(Column.class);
System.out.println(ca.value());
}
}
}
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Class<Bean> c=Bean.class;
Field[] fs=c.getDeclaredFields();
Bean b = null;
try {
b=c.newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Field f=fs[0];//由于只有一个属性所以这样测试
System.out.println(f.getName()+"="+b.getField());
f.setAccessible(true);//使私有属性可以被设置
try {
if(f.getType()==String.class)
f.set(b, "iteedu");//将b对象的f属性设置为"iteedu"
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch blockd
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(f.getName()+"="+b.getField());
}
}
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Class<Bean> c = Bean.class;
Field[] fs = c.getDeclaredFields();
Bean b = null;
try {
b = c.newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Field f = fs[0];// 由于只有一个属性所以这样测试
System.out.println(f.getName() + "=" + b.getField());
String fn = f.getName();
//用属性名合成set方法名
fn = fn.replaceFirst(fn.substring(0, 1), fn.substring(0, 1)
.toUpperCase());
System.out.println(fn);
Method m = null;
Class[] partypes = new Class[]{String.class};
try {
m = c.getMethod("set" + fn, partypes);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(m.getName());
Object arglist[] = new Object[]{"iteedu"};
try {
m.invoke(b, arglist);
} 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();
}
System.out.println(f.getName() + "=" + b.getField());
}
}