2017-02-23 63 views
-1

有沒有辦法創建當前類文件的實例?創建當前類文件的實例

public class Test { 
    public static void main(String[] args) { 
    Object o = new this(); 
    } 
} 

回報

Test.java:3: error: as of release 8, 'this' is allowed as the parameter name for the receiver type only, which has to be the first parameter 
      Object o = new this(); 
         ^

在舊版本的Java,你會得到如下:

Test.java:3: error: <identifier> expected 
       Object o = new this(); 
          ^

假設隨着時間的文件名和類名的變化(即Test不能硬編碼)。

+2

'Object o = new Test();'但它應該是'Test',而不是'Object'。在靜態方法中沒有'this' - 這是在類級別,而不是實例級別。 –

+0

@DaveNewton我正在尋找一種更加便攜的版本,它不依賴於類名的硬編碼。假設類名和文件名可以更改。 –

+2

爲什麼?你會得到什麼?你想要解決什麼具體問題? –

回答

0

只是類型:

public class Test { 
    public static void main(String[] args) { 
    Test o = new Test(); 
    } 
} 
0

您也可以指定實例Object如下:

public class Test { 
    public static void main(String[] args) { 
     Object o = new Test(); 
    } 
} 
0

你可以簡單地做:

Object o = new Test(); 

this關鍵字與parentheres代表構造的類,它只能從beginni調用另一個構造的NG,例如:

public class Foo 
{ 
    public Foo(String message) 
    { 
     System.out.println("Message: " + message); 
    } 

    public Foo() 
    { 
     this("default-constructed"); 
    } 
} 

new Foo(); 

將打印

Message: default-constructed 
0

我覺得你改變了你的類的名稱的方法是不正確的。

你基本上做了什麼是通過改變現有類的名稱進行重構。

爲什麼不使用eclipse IDE(或任何其他您的fav),它可以輕鬆自動完成它,甚至向您顯示所有細節,並要求您檢查項目中名稱的更改位置。

爲了防止重構,在eclipse中瀏覽並右鍵單擊您的類,然後選擇重構,然後選擇重命名,它會顯示一個窗口,您可以按照所需方式繼續進行,所有操作都將在點擊次數很少。

+0

如果您不使用IDE,該怎麼辦? –