java對象的實例化 – JAVA編程語言程序開發技術文章

——- android培訓、java培訓、期待與您交流! ———-
JAVA類,隻要知道瞭類名(全名)就可以創建其實例對象,通用的方法是直接使用該類提供的構造方法,如

NewObject o = new NewObject();

NewObject o = new NewObject("test");

NewObject o = new NewObject(new String[]{"aaa","bbb"});

除此之外,還可以利用java.lang.Class<T>類來實現JAVA類的實例化。

1、空構造方法

如果類有空構造方法,如下面的類

public class NewObject
{
String name;
public NewObject(String[] name)
{
  this.name = name[0];

     System.out.println(“ the object is created!”);
}
public void write()
{
  System.out.println(this.name);
}
}

使用以下代碼可實現實例化:

NewObject no = null;
try
   {
    no = (NewObject)Class.forName(className).newInstance();

   no.write();
   }
   catch (InstantiationException e)
   {
    e.printStackTrace();
   }
   catch (IllegalAccessException e)
   {
    e.printStackTrace();
   }
   catch (ClassNotFoundException e)
   {
    e.printStackTrace();
   }

2、帶參數構造方法

public class NewObject
{
String name;
public NewObject()
{

     System.out.println(“ the object is created!”);
}
public void write()
{
  System.out.println(“”);
}
}

使用以下代碼可實現實例化:

try
   {
    no = (NewObject)Class.forName(className).getConstructor(String.class).newInstance(names);

//no = (NewObject)Class.forName(className).getConstructor(new Object[]{String.class}).newInstance(names);
   }
   catch (IllegalArgumentException e)
   {
    e.printStackTrace();
   }
   catch (SecurityException e)
   {
    e.printStackTrace();
   }
   catch (InstantiationException e)
   {
    e.printStackTrace();
   }
   catch (IllegalAccessException e)
   {
    e.printStackTrace();
   }
   catch (InvocationTargetException e)
   {
    e.printStackTrace();
   }
   catch (NoSuchMethodException e)
   {
    e.printStackTrace();
   }
   catch (ClassNotFoundException e)
   {
    e.printStackTrace();
   }

3、帶數組參數構造方法

public class NewObject
{
String name;
public NewObject(String name)
{
  this.name = name;

    System.out.println(“ the object is created!”);
}
public void write()
{
  System.out.println(this.name);   
}
}

使用以下代碼可實現實例化:

try
   {
Constructor[] cs;
    cs = Class.forName(className).getConstructors();
    Constructor cc = Class.forName(className).getConstructor(String[].class);
    no = (NewObject)cc.newInstance(new Object[]{names});
   }
   catch (SecurityException e)
   {
    e.printStackTrace();
   }
   catch (ClassNotFoundException e)
   {
    e.printStackTrace();
   }
   catch (NoSuchMethodException e)
   {
    e.printStackTrace();
   }
   catch (IllegalArgumentException e)
   {
    e.printStackTrace();
   }
   catch (InstantiationException e)
   {
    e.printStackTrace();
   }
   catch (IllegalAccessException e)
   {
    e.printStackTrace();
   }
   catch (InvocationTargetException e)
   {
    e.printStackTrace();
   }

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *