好的,我在我的测试课中有这个
public Test(Player p, int locX){
this.p = p;
this.locX = locX;
}
(然后我也有getter / setter)
在我的主课上,当有人输入命令/测试时,会发生这种情况:
Player player = (Player) sender;
int locX = 0;
Test t = new Test(player, locX);
t.setLocX(player.getLocation().getBlockX();
t.setP(player);
olist.put(player.getName(), t);
所以这只是我用来更好地理解如何从对象获取两个值(不同)的测试项目。所以当玩家输入/检查玩家名称(存储在对象中)并且对象中的位置显示给玩家时,我想这样做。到目前为止我只有这个
for(String s : olist.keySet()){
if(s == player.getName()){
//Here I would like to display the 2 values to the player, but not
//sure how I would separate the two values :\
}
}
即使我在哈希映射中将玩家名称存储在对象中也没有意义,但是我正在使用这个测试项目试图学习如何获得两个来自1个对象的不同值(在实际项目中我需要获得一个位置和一个int,但我从简单开始; P)。 (这也是使用Bukkit API但不应该真正起作用......)
答案 0 :(得分:0)
使用公共getter获取您感兴趣的值。 你说你有吸气剂,好好利用它们......(我可能误解了这个问题)
另外,我发现在创建对象t之后立即使用setter setLocX和setP是很奇怪的。我会在通过构造函数实例化对象时设置它们。
答案 1 :(得分:0)
您可以使用“t”对象中的getter。
首先,从“t”对象中获取玩家:
Player p = t.getP();
现在你有了这名球员,得到他的名字:
String PName = p.GetName();
您可以从t:
中获取LocXint lx = t.getLocX();
你可以这样打印出来:
System.out.println("Player: " + PName + " |LocX: " + lx);
答案 2 :(得分:0)
警告:相当笨拙......不好的做法,但是因为你正在学习......
在返回对象/集合时从函数获取多个值的另一种方法不是一个选项,请尝试修改对象的值。例如
public class Number {
public int getValue() {
return a;
}
public void setValue(int a) {
this.a = a;
}
int a;}
public class BadPractice {
public static void main(String[] args) {
Number i= new Number();
Number j=new Number();
Number sum=new Number();
BadPractice b= new BadPractice();
b.sum(sum,i,j);
System.out.println("sum="+sum.getValue()+",i="+i.getValue()+",j="+j.getValue());
}
private void sum(Number sum,Number i, Number j) {
// TODO Auto-generated method stub
i.setA(10);
j.setA(20);
sum.setA(i.getValue()+j.getValue());
}}
给你结果。总和= 30,I = 10,J = 20