我正在尝试通过super()
构造函数定义常量。我的问题是我想要根据同一个类的另一个常量来定义它。让我告诉你我的代码。这是我的一个孩子课程:
public class Ball extends DisplayedObject {
public static String FILENAME = "/res/ball_icon.png";
public BufferedImage IMAGE;
public Ball() {
super(this);
}
}
这是父类:
public class DisplayedObject {
public static String FILENAME;
public BufferedImage IMAGE;
public DisplayedObject(DisplayedObject obj) {
InputStream is = getClass().getResourceAsStream(obj.FILENAME);
try {
obj.IMAGE = ImageIO.read(is);
} catch (IOException e) {
e.printStackTrace();
System.out.println("Error: Can't read image.");
}
}
}
我知道用super()
作为参数调用this
是不可能的,因为此时没有定义对象。但这正是我的问题。我怎样才能在短时间内解决这个问题?
答案 0 :(得分:2)
您可以将文件名传递给超类的构造函数:
public Ball() {
super(FILENAME);
}
将IMAGE成员移动到超类:
public class DisplayedObject
{
public BufferedImage IMAGE;
...
public DisplayedObject(String filename) {
InputStream is = getClass().getResourceAsStream(filename);
try {
IMAGE = ImageIO.read(is);
} catch (IOException e) {
e.printStackTrace();
System.out.println("Error: Can't read image.");
}
}
}
BTW,IMAGE
不是常数。