如何从对象接收多个值?

时间:2013-08-05 14:13:26

标签: java hashmap

好的,我在我的测试课中有这个

    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但不应该真正起作用......)

3 个答案:

答案 0 :(得分:0)

使用公共getter获取您感兴趣的值。 你说你有吸气剂,好好利用它们......(我可能误解了这个问题)

另外,我发现在创建对象t之后立即使用setter setLocX和setP是很奇怪的。我会在通过构造函数实例化对象时设置它们。

答案 1 :(得分:0)

您可以使用“t”对象中的getter。

首先,从“t”对象中获取玩家:

Player p = t.getP();

现在你有了这名球员,得到他的名字:

String PName = p.GetName();

您可以从t:

中获取LocX
int 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