day59(5.9)程序报错类型之类中的静态方法不能直接调用动态方法
2014-05-12 17:29
246 查看
报了这样的错,原因是l 因为:No
enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
原来我写的内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public
class改为public static class.
所以只要在class 前面加static 就行了。
改正后,代码成功。
package package1;
public class StaticTest {
public static void main(String[] args){//主方法
Employee[] staff=new Employee[3];
staff[0]=new Employee("Tom",40000);
staff[1]=new Employee("Dick",60000);
staff[2]=new Employee("Harry",40000);
}
static class Employee{//定义一个empoyee类
public Employee(String n,double s){
name=n;
salary=s;
id=0;
}
public String getName(){
return name;
}
public double getSalary(){
return salary;
}
public int getId(){
return id;
}
public void setId(){
id=nextId;
nextId++;
}
public int getNextId(){
return nextId;
}
public void main (String[] args){
Employee e=new Employee("Harry",50000);
System.out.println(e.getName()+""+e.getSalary());
}
private String name;
private double salary;
private int id;
private int nextId=1;
}
}
ParamTest.java未完待续
enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
原来我写的内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public
class改为public static class.
所以只要在class 前面加static 就行了。
改正后,代码成功。
package package1;
public class StaticTest {
public static void main(String[] args){//主方法
Employee[] staff=new Employee[3];
staff[0]=new Employee("Tom",40000);
staff[1]=new Employee("Dick",60000);
staff[2]=new Employee("Harry",40000);
}
static class Employee{//定义一个empoyee类
public Employee(String n,double s){
name=n;
salary=s;
id=0;
}
public String getName(){
return name;
}
public double getSalary(){
return salary;
}
public int getId(){
return id;
}
public void setId(){
id=nextId;
nextId++;
}
public int getNextId(){
return nextId;
}
public void main (String[] args){
Employee e=new Employee("Harry",50000);
System.out.println(e.getName()+""+e.getSalary());
}
private String name;
private double salary;
private int id;
private int nextId=1;
}
}
ParamTest.java未完待续
相关文章推荐
- 类中的静态方法不能直接调用动态方法
- Java在静态方法中直接调用了动态方法出现错误
- 为什么静态方法中不能调用动态方法?
- 静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建类的实例,然后调用)
- 调用静态方法是不能用this关键字的。直接使用类名就可以了
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- java中静态方法中为什么不能使用this、super和直接调用非静态方法
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- 动态的内部类不能在静态方法中直接声明对象
- day61(5.11)程序报错类型之不能在静态方法中引用非静态变量
- main方法不能直接调用 非静态方法
- 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法
- 安卓4.4以前不能直接调用js获取返回值,解决方法
- c# dynamic 类型调用静态方法实例
- java为什么不能在静态域或方法中引用类型变量?
- 静态方法不能调用非静态变量,非静态方法可以引用静态变量
- JAVA 反射 动态调用不同类的静态方法
- java程序动态加载java源文件并调用类方法
- 动态及静态的调用Action中的方法
- 直接调用类中的静态方法的想法