java - 左侧必须是变量(ArrayList 和 Array)

标签 java arrays variables arraylist

我对 ArrayList 和 Array 之间有点困惑,我理解变量是什么,但我不明白为什么我不能将 ArrayList 转换为 Array 并具有相同的效果。

我目前使用 ArrayList 时的这段代码

import java.util.Objects;

import com.google.gson.Gson;
import com.google.gson.JsonObject;


public final class NpcDefinitionLoader extends JsonLoader {

    /**
     * Creates a new {@link NpcDefinitionLoader}.
     */
    public NpcDefinitionLoader() {
        super(DefinitionEditor.fileChooser.getSelectedFile().getAbsolutePath());
    }

    @Override
    public void load(JsonObject reader, Gson builder) {
        int index = reader.get("id").getAsInt();
        String name = Objects.requireNonNull(reader.get("name").getAsString());
        String description = Objects.requireNonNull(reader.get("examine").getAsString());
        int combatLevel = reader.get("combat").getAsInt();
        int size = reader.get("size").getAsInt();
        boolean attackable = reader.get("attackable").getAsBoolean();
        boolean aggressive = reader.get("aggressive").getAsBoolean();
        boolean retreats = reader.get("retreats").getAsBoolean();
        boolean poisonous = reader.get("poisonous").getAsBoolean();
        int respawnTime = reader.get("respawn").getAsInt();
        int maxHit = reader.get("maxHit").getAsInt();
        int hitpoints = reader.get("hitpoints").getAsInt();
        int attackSpeed = reader.get("attackSpeed").getAsInt();
        int attackAnim = reader.get("attackAnim").getAsInt();
        int defenceAnim = reader.get("defenceAnim").getAsInt();
        int deathAnim = reader.get("deathAnim").getAsInt();
        int attackBonus = reader.get("attackBonus").getAsInt();
        int meleeDefence = reader.get("defenceMelee").getAsInt();
        int rangedDefence = reader.get("defenceRange").getAsInt();
        int magicDefence = reader.get("defenceMage").getAsInt();

        NPCDefinitions.definitions.get(index) = new NPCDefinitions(index, name, description, combatLevel, size, attackable, aggressive, retreats,
            poisonous, respawnTime, maxHit, hitpoints, attackSpeed, attackAnim, defenceAnim, deathAnim, attackBonus, meleeDefence,
            rangedDefence, magicDefence);
    }
}

我在这里遇到错误

NPCDefinitions.definitions.get(index) = new NPCDefinitions(index, name, description, combatLevel, size, attackable, aggressive, retreats,
        poisonous, respawnTime, maxHit, hitpoints, attackSpeed, attackAnim, defenceAnim, deathAnim, attackBonus, meleeDefence,
        rangedDefence, magicDefence);

说左边一定是一个变量。当我使用这样的数组时

NPCDefinitions.definitions[index] = new NPCDefinitions(index, name, description, combatLevel, size, attackable, aggressive, retreats,
        poisonous, respawnTime, maxHit, hitpoints, attackSpeed, attackAnim, defenceAnim, deathAnim, attackBonus, meleeDefence,
        rangedDefence, magicDefence);

代码完美运行。

我对此感到困惑,我如何使用 ArrayList 来完成这项工作?

最佳答案

使用List#add而不是List#get并分配运算符。

尝试:

NPCDefinitions.definitions.add(index, new NPCDefinitions(index, name, description, combatLevel, size, attackable, aggressive, retreats,
    poisonous, respawnTime, maxHit, hitpoints, attackSpeed, attackAnim, defenceAnim, deathAnim, attackBonus, meleeDefence,
    rangedDefence, magicDefence));

编辑:

NPCDefinitions.definitions使用前必须定义。

分配一个新的ArrayList实例为definitions喜欢 NPCDefinitions.definitions = new ArrayList<>();NPCDefinitions 中成员定义之前或处的某处.

关于java - 左侧必须是变量(ArrayList 和 Array),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31098964/

相关文章:

java - 线程中出现异常 "main"Java.lang.nullPointerException 错误?

java - 在 cmd 提示符下编译并运行在 Eclipse 上编写的 java 代码

shell - Unix 用户创建的变量

python - Python timeit 设置中的局部变量

java - 具有多种压缩方法的 zip 的单一 Java 实现

java - 获取图像的RGB-YCbCr分量

php - 处理超大阵列的最佳实践? D B?

java - 构造函数未定义错误和泛型类

arrays - 如何使用 swift 将自定义结构数组保存到 NSUserDefault?

wpf - 如何在 slider 值更改时使 TextBlock.Text = Slider.Value