Java 如何向武器a类图像URL传输

Java 如何向武器a类图像URL传输,java,Java,我需要将url传输到武器类,但它给了我错误: 在创建超类型构造函数之前,无法引用“Object.Class” 叫 这个代码有很多错误 我不知道为什么这两个都是私人的 正如Luke Lee敏锐地指出的那样,您不能像调用那样调用getClass()。考虑另一种管理它的方法,比如给出资源的名称并让超级类来解析它 arm.java: private class Weapon { protected int range; // units? feet? miles? furlongs?

我需要将url传输到武器类,但它给了我错误:

在创建超类型构造函数之前,无法引用“Object.Class” 叫


这个代码有很多错误

我不知道为什么这两个都是私人的

正如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);
    }
}