2017-02-23 103 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,该怎么办? –