本帖最后由 wodeairenw 于 2013-4-30 12:53 编辑
- import java.beans.PropertyDescriptor;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- public class StringTest {
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
-
- Class<Outer> out =Outer.class;
-
- Constructor co =out.getConstructor(int.class);//这里为什么报错
- //接收有int类型的参数啊,怎么会错
- //如何获取无参数的构造方法?
- Outer ot =(Outer) co.newInstance(4);
- ot.function();
-
-
- /*
- //class获得方法
- Method methodCharAt=out.getMethod("function");
- methodCharAt.invoke(new Outer());
- //class获得成员
- //System.out.println(out.getField("x"));
- //内省
- String propertyName= "x";//设置属性名
- //下面是内省的重要对象PropertyDescriptor
- PropertyDescriptor pd = new PropertyDescriptor(propertyName,out);
- //Method getReadMethod() 获得应该用于读取属性值的方法。
- Method methidGetX = pd.getReadMethod();
- //Object invoke(Object obj, Object... args)
- //对带有指定参数的指定对象调用由此 Method 对象表示的底层方法
- Object retVal = methidGetX.invoke(new Outer() );
- System.out.println(retVal);
- */
- }
- }
- abstract class AbsDemo
- {
- abstract void show();
- }
- class Outer
- {
- Outer()
- {
-
- };
- Outer(int z)
- {
- this.z=z;
- };
- int x =3;
- int z;
- public int getX() {
- return x;
- }
- public void setX(int x) {
- this.x = x;
- }
- public void function()
- {
- final int y =9;
- new AbsDemo()
- {
- void show()
- {
- System.out.println("x==="+x);
- System.out.println("y==="+y);
- }
- }.show();
-
- }
- }
复制代码 无参构造方法如何获取,并创建对象。还有有参数的构造方法为什么报错。 |