添加类变量的实例以列出并更改它们

时间:2016-08-20 20:22:06

标签: java instance extend

我有一个扩展Module的类,模块有一个名为values的列表和一个getter和adder。

在我的课程扩展模块中,我写了类似的东西

private ValueFloat threads = new ValueFloat("Threads", 2, 1, 5, 0);

在构造函数中我写

addValue(threads);

现在从其他地方我循环遍历一个类扩展模块的值并更改它们。

但是从类扩展模块,返回threads.getValue();还是老了。

问题是什么?请帮忙!

ValueFloat类:

package me.niklasb.client.utils.ValueStuff;


import me.niklasb.client.main.Client;

public class ValueFloat extends Value {
    private String name;
    private float value;
    private float min;
    private float max;
    private int round;

    public ValueFloat(String name, float value, float min, float max, int round) {
        super(name);
        this.value = value;
        this.min = min;
        this.max = max;
        this.round = round;
    }

    public ValueFloat(String name, float value, float min, float max) {
        super(name);
        this.value = value;
        this.min = min;
        this.max = max;
        this.round = 1;
    }

    public float getValue() {
        return this.value;
    }

    public void setValue(float value) {
        this.value = value;
        Client.saveValues();
    }

    public int getRound() {
        return this.round;
    }

    public float getMin() {
        return this.min;
    }

    public float getMax() {
        return this.max;
    }
}

示例模块:

package me.niklasb.client.modules;

import com.darkmagician6.eventapi.EventTarget;
import me.niklasb.client.Category;
import me.niklasb.client.Mod;
import me.niklasb.client.Module;
import me.niklasb.client.event.UpdateEvent;
import me.niklasb.client.utils.TimeHelper;
import me.niklasb.client.utils.ValueStuff.ValueString;
import org.lwjgl.input.Keyboard;

import java.util.Random;

@Mod(name = "Spammer", keyCode = Keyboard.KEY_NONE, cat = Category.Misc)
public class Spammer extends Module {
    private Random random;
    private TimeHelper time;
    private ValueString text = new ValueString("Text", "@all Meow! Best client EU West!");

    public Spammer() {

        addValue(text);
        time = new TimeHelper();
        random = new Random();
    }

    @EventTarget
    private void onUpdate(UpdateEvent event) {
        if (mc.theWorld == null) {
            return;
        }

        if (this.time.isDelayComplete(10000L)) {
            Random randomNumber = new Random();
            for (int msg = 1; msg <= 10; msg++) {
                randomNumber.nextInt(100);
            }

            mc.thePlayer.sendChatMessage(text.getValue() + " " + random.nextInt(1337));

            time.setLastMS();
        }

    }


}

基本gui元素设置值:

ValueString valueString = (ValueString) value;


GuiTextField textField = new GuiTextField(valueString.getName(), valueString.getValue());

textField.addTextListener(new TextListener() {
    @Override
    public void keyTyped(char key, String text) {
        valueString.setValue(text);
    }

    @Override
    public void stringEntered(String text) {
        valueString.setValue(text);

    }
});

add(textField);

值在超类中声明,例如&#34; Spammer&#34;

private String name;
private ArrayList<Value> values;

public Module() {

    values = new ArrayList<>();

}

简而言之:

它们是在类中声明的变量,此变量的实例保存在列表中。现在,如果我从列表中获取其中一个实例并更改它的值,我希望在声明变量的类中,值也会更改。

0 个答案:

没有答案