谢谢楼上几位! 改完如下:import java.util.*;public class MouseList2 extends ArrayList{ public void add(Mouse m) { super.add(m); } public Object get(int index) { return (Mouse)(super.get(index)); } public int size() { return super.size(); }
public class Mouse { private int mouseNumber; Mouse(int i) { mouseNumber = i; } // Override Object.toString(): public String toString() { return "This is Mouse #" + mouseNumber; } public int getNumber() { return mouseNumber; } } public static void main(String[] args){ MouseList2 list = new MouseList2(); for(int i = 0; i < 3; i++) list.add(new Mouse(i)); } } 错误提示: D:\tools\jdk1.3\mycode\MouseList2.java:28: 在静态上下文中不能引用非静态变量 this list.add(new Mouse(i)); ^ 1 个错误Tool completed with exit code 1不是太明白什么原因?
现在好了,改成static public class Mouse 就没事了,我再想想为什么,谢谢大家!
public static class Mouse{......} main是static静态方法引用的类也得要是静态方法,表示长久驻留类存。
我新建了一个包mylib,把Mouse.java至于其中,在编译MouseList.java时出错。具体如下://Mouse.java package mylib;public class Mouse { int mouseNumber; public Mouse(int i) { mouseNumber = i; } // Override Object.toString(): public String toString() { return "This is Mouse #" + mouseNumber; } public int getNumber() { return mouseNumber; } } /////////////////////////////////////////////////////////////////// //MouseList.java import java.util.*; import mylib.*; //为什么改为import mylib.Mouse;编译即可通过?public class MouseList extends ArrayList{ public static void main(String[] args){ MouseList list = new MouseList(); for(int i = 0; i < 3; i++) list.add(new Mouse(i)); for(int i = 0; i < list.size(); i++) System.out.println(list.get(i)); } } /////////////////////////////////////////////////////////////////// 编译错误消息: D:\tools\jdk1.3\mycode\MouseList.java:9: 不能解析符号 符号:构造方法 Mouse (int) 位置:类 in Mouse list.add(new Mouse(i)); ^ 1 个错误Tool completed with exit code 1 不知道为什么会出现这样的情况,请大家一起来探讨,谢谢
改完如下:import java.util.*;public class MouseList2 extends ArrayList{
public void add(Mouse m) {
super.add(m);
}
public Object get(int index) {
return (Mouse)(super.get(index));
}
public int size() { return super.size(); }
public class Mouse {
private int mouseNumber;
Mouse(int i) { mouseNumber = i; }
// Override Object.toString():
public String toString() {
return "This is Mouse #" + mouseNumber;
}
public int getNumber() {
return mouseNumber;
}
} public static void main(String[] args){
MouseList2 list = new MouseList2();
for(int i = 0; i < 3; i++)
list.add(new Mouse(i));
}
} 错误提示:
D:\tools\jdk1.3\mycode\MouseList2.java:28: 在静态上下文中不能引用非静态变量 this
list.add(new Mouse(i));
^
1 个错误Tool completed with exit code 1不是太明白什么原因?
main是static静态方法引用的类也得要是静态方法,表示长久驻留类存。
package mylib;public class Mouse {
int mouseNumber;
public Mouse(int i) { mouseNumber = i; }
// Override Object.toString():
public String toString() {
return "This is Mouse #" + mouseNumber;
}
public int getNumber() {
return mouseNumber;
}
} ///////////////////////////////////////////////////////////////////
//MouseList.java
import java.util.*;
import mylib.*; //为什么改为import mylib.Mouse;编译即可通过?public class MouseList extends ArrayList{
public static void main(String[] args){
MouseList list = new MouseList();
for(int i = 0; i < 3; i++)
list.add(new Mouse(i));
for(int i = 0; i < list.size(); i++)
System.out.println(list.get(i));
}
} ///////////////////////////////////////////////////////////////////
编译错误消息:
D:\tools\jdk1.3\mycode\MouseList.java:9: 不能解析符号
符号:构造方法 Mouse (int)
位置:类 in Mouse
list.add(new Mouse(i));
^
1 个错误Tool completed with exit code 1
不知道为什么会出现这样的情况,请大家一起来探讨,谢谢