java 静态方法问题

代码:publicclassStaticMethodTest{publicstaticvoidmain(String[]args){//Employeee=newEmpl... 代码:
public class StaticMethodTest
{
public static void main(String[] args)
{
//Employee e = new Employee();
int n = Employee.getNextId();
System.out.println("n= "+n);

}

class Employee
{
private static int nextId = 1;

public Employee()
{
}

public static int getNextId()
{
return nextId;
}
}
}
编译器报错,两个错误,一个是声明static int nextId = 1的时候报错,第二个是在声明public static int getNextId()的时候报错,错误类型如下:
the field nextId cannot be declared static in a non-static inner type, unless initialized with a constant expression
The method getNextId cannot be declared static; static methods can only be declared in a static or top level type
哪个大神知道为什么会这样呀?我之前写了一个长一些的代码也是这样写的但是并没有报错呀,怎么更改我现在这个代码呢?谢谢了!
展开
 我来答
eduel
2014-08-21 · 超过14用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:13.5万
展开全部
内部类的实例化是依托于外部类的实例,当你在非静态的的内部类中定义了静态成员,说明此静态成员并不需要实例化就能使用,这样就破坏了内部类的原则,因此非静态的内部类的成员变量及方法不能定义为静态的。这样会产生歧义,给你一个链接你看看就知道了,我就不贴了http://bbs.csdn.net/topics/90510249
WellerV
推荐于2017-11-26 · 超过23用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:28.6万
展开全部
应该在class Employee前加上static.
楼主,你应该注意看报错信息,the field nextId cannot be declared static in a non-static inner type, unless initialized with a constant expression,字段nextid是静态的,但是不能在非静态代码块内声明。The method getNextId cannot be declared static; static methods can only be declared in a static or top level type,getNextId方法不能声明是静态的,静态方法是不能声明在别的方法里面的,楼主如果是照着敲代码,注意检查{}对应关系。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
严肃的甲道士
2018-04-11 · 传播技术传播爱,笔芯❤️
严肃的甲道士
采纳数:337 获赞数:619

向TA提问 私信TA
展开全部
1、 每个jvm线程都有一个私有的虚拟机栈,与线程同时创建。虚拟机栈存储的是栈帧,栈帧包含局部变量和部分结果,在方法调用和返回中起作用。
2、使用非java语言编写的程序,并且自身实现和运行不依赖jvm的不需要分配本地方法栈,若需要jvm支持或者使用了java内置的指令集产生协作关系的才会分配本地方法栈。如果提供,则在创建每个线程时,通常为每个线程分配本地方法堆栈。
3、Java虚拟机提供指令将常量或值从本地变量或字段加载到操作数栈中。
其他Java虚拟机指令从操作数栈中取操作数,对它们进行操作,并将结果返回到操作数堆栈中。 操作数栈也用于准备参数传递给方法和接收方法结果。
4、以上是栈、栈帧、本地方法栈、操作数栈的相关内容,java的执行到结束在内存中的表现具都包含。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-08-21
展开全部
	static class Employee
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式