reflaction(有参数)

来源:互联网 发布:无线ap无网络 编辑:程序博客网 时间:2024/05/17 23:27

import java.lang.reflect.*;
import java.awt.*;

class SampleNoArg
{
 @SuppressWarnings("unchecked")
 public static void main(String[] args)
 {
//  Rectangle r = (Rectangle)createObject("java.awt.Rectangle");
//  System.out.println(r.toString());
  

  @SuppressWarnings("unused")
  Rectangle rectangle;
  Class rectangleDefinition;
  Class[] intArgsClass = new Class[] {int.class, int.class};

  Integer height = new Integer(12);
  Integer width = new Integer(34);
  Object[] intArgs = new Object[] {height, width};
  Constructor intArgsConstructor;
  try
  {
  rectangleDefinition = Class.forName("java.awt.Rectangle");
  intArgsConstructor=rectangleDefinition.getConstructor(intArgsClass);
  rectangle = (Rectangle) createObject(intArgsConstructor, intArgs);
  }
  catch(ClassNotFoundException e){System.out.println(e);}
  catch(NoSuchMethodException e){System.out.println(e);}
 }
 @SuppressWarnings("unchecked")
 static Object createObject(String className)
 {
  Object object = null;
  try
  {
   Class classDefinition = Class.forName(className);
   object = classDefinition.newInstance();


  }
  catch(InstantiationException e){System.out.println(e);}
  catch(IllegalAccessException e) { System.out.println(e); }
  catch(ClassNotFoundException e){ System.out.println(e); }
  return object;
 }
 
 
 @SuppressWarnings("unchecked")
 public static Object createObject(Constructor constructor,Object[] arguments)
 {
  System.out.println ("Constructor: " + constructor.toString());
  Object object = null;
  try
  {
   object = constructor.newInstance(arguments);
   System.out.println ("Object: " + object.toString());
   return object;
  }
  catch(InstantiationException e){ System.out.println(e); }
  catch(IllegalAccessException e){ System.out.println(e); }
  catch(IllegalArgumentException e){ System.out.println(e); }
  catch(InvocationTargetException e){ System.out.println(e); }
  return object;
 }

}