-1
Project sample = new Project();

这意味着创建一个项目类型的变量样本,创建一个对象并将其分配给变量。

下面的代码是什么意思

 Project sample = new Project() {

  private void Test(){

   }

}

Test 是一种方法,这段代码是什么意思,如何调用 Test() ?

谢谢

4

4 回答 4

5

这:

  1. 创建一个匿名子类Project
  2. 在该类中,创建一个名为的新方法Test()(在其他情况下,这可能是覆盖,但在这里不能);
  3. 创建这个子类的一个实例;
  4. 将实例引用分配给sample

Test()private,调用它的唯一方法是从匿名子类的另一个方法。由于您没有其他方法,因此无法调用Test().

于 2012-12-16T12:47:47.060 回答
1
Project sample = new Project() {

  private void Test(){

   }

}

只需创建一个扩展 Project 的匿名类,该类返回并new返回匿名对象。
Test方法要么是新定义的实例方法,要么是(如果Project有方法则被覆盖Test)。

于 2012-12-16T12:48:02.080 回答
0

除了其他答案。当您实现interface或扩展abstract类时,这种匿名类非常有用。例如:

public interface MyInterface {
    public void doStuff();
}

这是你的实现:

MyInterface myInterface = new MyInterface() {

    public void doStuff() {
        //here is your implementation
    }

    public void doAnotherStuff() {
        //Note that this method is public, but
        //you're still not able to call it from outside of this class
        //because it's not part of MyInterface's contract
    }
};

这一行会给你一个错误:

myInterface.doAnotherStuff(); //WTF? I don't know about this method of MyInterface
于 2012-12-16T12:55:30.153 回答
0

您提供的代码是匿名类的示例。

正如您在其中声明的私有方法一样,您只能从该类内部访问它。

这种类型的构造通常用于类行为的局部变化。通常它用于实现一个简单的接口。所以我们可以在其中委托一些操作。

于 2012-12-16T12:58:52.460 回答