实例未将给定变量传递给 class
Instance isn't passsing given variables to class
首先;感谢阅读并帮助我,我是 Java 的新手,我 运行 遇到了问题。
我在特定的 class 中创建了实例变量。在此之后,我创建了这个 class 的新 instance/object 并指定了变量的新输入。问题是:当我 运行 代码并尝试它是否工作时,它不工作。似乎新变量没有传递给正在实例化的 class。
(当我左键单击翡翠块时,会出现一个空字符串)
我已经尝试过的:
- 正在创建一个 setter 方法来设置变量。
- 使用构造函数
Class 我想创建一个实例:
package rico.polkadot;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
public class InstanceClass implements Listener {
public String name;
@EventHandler
public void onInteract(PlayerInteractEvent e) {
Action action = e.getAction();
Player p = e.getPlayer();
Block b = e.getClickedBlock();
if(action.equals(Action.LEFT_CLICK_BLOCK)) {
if(b.getType().equals(Material.EMERALD_BLOCK)) {
p.sendMessage(name);
}
}
}
}
主要class:
package rico.polkadot;
import java.util.List;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(new InstanceClass(this),this);
InstanceClass test = new InstanceClass();{
test.name = "lol";
}
}
}
好的,你应该在 InstanceClass
中创建一个构造函数或至少 setter - 最佳选择:
public class InstanceClass implements Listener {
public String name;
public InstanceClass(String name) {
this.name = name;
}
}
那你问的是实例。你在你的 onEnable()
函数中创建了一个,但你必须记住,它不能在这个函数之外访问,所以你不能只从你的 InstanceClass
访问这个 test
变量。
@Override
public void onEnable() {
// here you create instance of InstanceClass
InstanceClass test = new InstanceClass("lol");
}
已解决,在 onEnable 中需要多个构造函数和“RegisterEvents”。感谢您的帮助。
首先;感谢阅读并帮助我,我是 Java 的新手,我 运行 遇到了问题。
我在特定的 class 中创建了实例变量。在此之后,我创建了这个 class 的新 instance/object 并指定了变量的新输入。问题是:当我 运行 代码并尝试它是否工作时,它不工作。似乎新变量没有传递给正在实例化的 class。 (当我左键单击翡翠块时,会出现一个空字符串)
我已经尝试过的:
- 正在创建一个 setter 方法来设置变量。
- 使用构造函数
Class 我想创建一个实例:
package rico.polkadot;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
public class InstanceClass implements Listener {
public String name;
@EventHandler
public void onInteract(PlayerInteractEvent e) {
Action action = e.getAction();
Player p = e.getPlayer();
Block b = e.getClickedBlock();
if(action.equals(Action.LEFT_CLICK_BLOCK)) {
if(b.getType().equals(Material.EMERALD_BLOCK)) {
p.sendMessage(name);
}
}
}
}
主要class:
package rico.polkadot;
import java.util.List;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(new InstanceClass(this),this);
InstanceClass test = new InstanceClass();{
test.name = "lol";
}
}
}
好的,你应该在 InstanceClass
中创建一个构造函数或至少 setter - 最佳选择:
public class InstanceClass implements Listener {
public String name;
public InstanceClass(String name) {
this.name = name;
}
}
那你问的是实例。你在你的 onEnable()
函数中创建了一个,但你必须记住,它不能在这个函数之外访问,所以你不能只从你的 InstanceClass
访问这个 test
变量。
@Override
public void onEnable() {
// here you create instance of InstanceClass
InstanceClass test = new InstanceClass("lol");
}
已解决,在 onEnable 中需要多个构造函数和“RegisterEvents”。感谢您的帮助。