0

TestClass実行時にこれの新しいインスタンスを作成することは可能ですか? TestClass someObj = new TestClass(); also TestClass[] someObj = new TestClass();Java プリミティブ型に対しても同じものを作成する方法と同様です。

例を挙げて回答を親切にサポートしてください。

編集:

import java.awt.Rectangle;

public class SampleNoArg {

   public static void main(String[] args) {
      Rectangle r = (Rectangle) createObject("java.awt.Rectangle");
      System.out.println(r.toString());
   }

   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;
   }
}

上記と同じですが、オブジェクトの配列を何度か作成したいと思います。

4

1 に答える 1

1

Class#newInstanceを使用して配列をインスタンス化することはできません。

InstantiationException - この Class が抽象クラス、インタフェース、配列クラス、プリミティブ型、または void を表している場合。または、クラスに nullary コンストラクターがない場合。または、インスタンス化が他の理由で失敗した場合。

考えられる回避策は次のとおりです。

@SuppressWarnings("unchecked")
public static <T> T[] newArray(Class<T> clazz, int n) {
    return (T[]) Array.newInstance(clazz, n);
}
于 2013-04-24T10:19:37.020 に答える