Java 如何向武器a类图像URL传输
我需要将url传输到武器类,但它给了我错误: 在创建超类型构造函数之前,无法引用“Object.Class” 叫Java 如何向武器a类图像URL传输,java,Java,我需要将url传输到武器类,但它给了我错误: 在创建超类型构造函数之前,无法引用“Object.Class” 叫 这个代码有很多错误 我不知道为什么这两个都是私人的 正如Luke Lee敏锐地指出的那样,您不能像调用那样调用getClass()。考虑另一种管理它的方法,比如给出资源的名称并让超级类来解析它 arm.java: private class Weapon { protected int range; // units? feet? miles? furlongs?
这个代码有很多错误 我不知道为什么这两个都是私人的 正如Luke Lee敏锐地指出的那样,您不能像调用那样调用
getClass()
。考虑另一种管理它的方法,比如给出资源的名称并让超级类来解析它
arm.java:
private class Weapon {
protected int range; // units? feet? miles? furlongs?
protected Image image;
public Weapon(int range, String imageName) {
this.range = range;
image = new Image(this.getClass().getResource(imageName).toExternalForm()); // what happens if imgUrl is null? Not a URL?
}
}
Knife.java:
private class Knife extends Weapon {
// Magic numbers are bad; these are more self documenting.
public static final int DEFAULT_RANGE = 5;
public static final String DEFAULT_IMAGE_URL = "knife.png";
public Knife() { this(DEFAULT_RANGE, DEFAULT_IMAGE_URL); }
public Knife(int range, String imageName) {
super(range, imageName);
}
}
问题是,您的Knife类需要一个具有范围和图像URL的构造函数;你的武器类需要一个默认构造函数。你的代码甚至不会编译。但我需要图像url“knife.png”的默认值是的,我知道。下面是我的答案。你可以用
Knife.class
literal替换getClass()。问题是你不能在超级构造函数完成之前引用父类的成员。我想我的代码不会。你是说getClass()调用吗?你可能是对的。getClass
是Object
的成员是的,你是对的。如果我用Spring来做这件事,这不会是一个问题。武器和刀是内部类。刀上也有同样的错误。
private class Knife extends Weapon {
// Magic numbers are bad; these are more self documenting.
public static final int DEFAULT_RANGE = 5;
public static final String DEFAULT_IMAGE_URL = "knife.png";
public Knife() { this(DEFAULT_RANGE, DEFAULT_IMAGE_URL); }
public Knife(int range, String imageName) {
super(range, imageName);
}
}