错误消息“非法开始表达”?

时间:2013-07-27 02:30:07

标签: java class methods compiler-errors

// 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 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

在其他方法中嵌套方法无效,但您可以使用方法定义inner class并获得类似的效果。之前的thread有一些很好的例子。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

当你在类中放入一个类时,它被称为本地类,其范围仅在方法中。

     class Number // local class
     {
         int i;
     }

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

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