-1
// Simple program to understand pass by reference 
import java.util.*;
public class HelloDate {
    public static void main(String args[])
    {
         class Number                     // Contains only an integer
         {
             int i;
         }
         static void f(Number k)           // <<--- Illegal start of expression ???
         {
             k.i = 22;
         } 
         Number n1 = new Number();        // New object of Number
         n1.i = 9;
         f(n1);                           //Passing an object
         System.out.println(n1.i);        // Print
      }
    }  

代码显示错误static void f(Number k)。我应该把方法void f()放在一个类中吗?如果是,为什么有必要这样做?

4

4 回答 4

5

方法必须是类的成员,它们只能放在类的主体中。

于 2013-07-27T02:31:13.060 回答
0

当你把一个类放在一个方法中时,它被称为一个本地类,它的作用域只在方法中。

     class Number // local class
     {
         int i;
     }

但是,您不能将一个方法直接放在另一个方法中。您只能将一个方法放在一个类中。以您的代码为例,您可以f输入HelloDateNumber

如果你f输入HelloDate,你也需要Number输入HelloDate。否则, , 的参数fNumber k引用java.lang.Number而不是 in 中Number定义的main

于 2013-07-27T02:44:44.027 回答
0

问题是,您f()在另一个方法中直接有一个方法main()

于 2013-07-27T02:43:35.053 回答
0

将方法嵌套在其他方法中是无效的,但您可以定义inner class一个方法并获得类似的效果。这个先前的线程有一些很好的例子。

于 2013-07-27T02:37:37.803 回答