2012-09-02 85 views
0

我已經建立2包用類,如申報類,包 - java的

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

好心幫我...

回答

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

...這是不是真的一樣的東西,當然,...但它可以幫助你的好意。

+0

謝謝喬恩,但我不明白你的意思,請你簡單點。 (我是新來的java) – user1629372

+1

@ user1629372:我已經儘可能地簡化了它,真的。你不能做你想做的事情。你沒有給我們任何關於你爲什麼要*這樣做的信息,這使得很難給出進一步的建議...... –

0
CL1 var1 = new CL1(); 

這是java中的一個錯誤。 CL1是變量的標識符,而不是數據類型,因此創建變量時不能將CL1用作類型。