java - Java中的优化方法

标签 java oop

我想在 Pane 中添加两个敌人,DragonOrc 。这两个类都扩展了一个名为 Entity 的父类(super class)。 ,我想为这两种方法创建一个方法。我尝试过使用 List<? extends Sprite> listList<? super Sprite> list ,但它不起作用,因为我需要将对象添加到列表中并稍后在调用 add 方法时读取它。

public void addDragon(List<Dragon> list) {
    double imageWidth = 0;
    for(int i = 0; i < 6; i++) {
        Dragon dragon = new Dragon();
        imageWidth = dragon.getWidth();
        pane.getChildren().add(dragon);
        list.add(dragon);
    }
}

public void addDragon(List<Orc> list) {
    double imageWidth = 0;
    for(int i = 0; i < 6; i++) {
        Orc orc = new Orc();
        imageWidth = orc.getWidth();
        pane.getChildren().add(orc);
        list.add(orc);
    }
}

最佳答案

传入您要创建的类型的Supplier:

public <T extends Sprite> void addThings(List<? super T> list, Supplier<T> supplier) {

然后用该供应商的调用替换构造函数:

T thing = supplier.get();
imageWidth = thing.getWidth();
pane.getChildren().add(thing);
list.add(thing);

您可以像这样调用它:

addThings(listOfDragons, Dragon::new);
addThings(listOfOrcs, Orc::new);

关于java - Java中的优化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50162172/

相关文章:

Java kafka 客户端记录每个线程的所有配置

java - 通过单击按钮更改 fragment

java - 将包含 3DES key 的 Java JCEKS keystore 转换为 PKCS12

java - Java 中需要类变量吗?

javascript - 在面向对象的 JavaScript 中使用 Onclick

javascript - 无法读取未定义的属性 '-1'

java - 如何将 hashmap$entry 的 ArrayList 转换为 hashmap

java - Android - 从其他 Activity 检索 ArrayList

java - 如何从事件监听器的语句中调用函数?

python - 一旦满足条件,如何删除列表中对象的实例?