0

私は次のようなクラスで2つのパッケージを作成しました

pakage1.class.files
  |- ClassA;
  |- ClassB;

pakage2.class.files
  |- ClassC;

しかし、私は次のようにコードを呼び出したい

public class ClassC
{
    public void method1()
    {
        pakage1.class.files.ClassA var1 = new pakage1.class.files.ClassA();
    }
}

しかし、私は「pakage1.class.files.ClassA」を次のような変数として渡したいです。

public class ClassC
{
    public string CL1 = "pakage1.class.files.ClassA";

    public void method1()
    {
        CL1 var1 = new CL1();
    }
}

親切に助けて...

4

2 に答える 2

1

いいえ、できません。変数の型は、コンパイル時に認識されている必要があります。

あなたが使用することができます:

Class<?> clazz = Class.forName(className);
Object object = clazz.newInstance();

...しかし、もちろん、メンバーのいずれかを取得するには、リフレクションを使用する必要があります。そのタイプの変数はありません。

編集: もちろん、コードのどこにでも完全修飾名を付ける必要はありません。importそのためにステートメントを使用できます。

// Please don't include "class" as part of your package name...
import package1.class.files.ClassA;

public class ClassC {
    public void method1() {
        ClassA var1 = new ClassA();
    }
}

...もちろん、実際には同じではありません...しかし、とにかく役立つかもしれません。

于 2012-09-02T08:05:39.300 に答える
0
CL1 var1 = new CL1(); 

これは Java のエラーです。CL1 は変数の識別子であり、データ型ではないため、変数を作成するときに CL1 を型として使用することはできません。

于 2012-09-02T08:13:31.627 に答える