如何获取匿名对象参数?

时间:2019-03-30 14:35:20

标签: java hashtable anonymous-objects

我正在尝试将我的匿名对象从类添加到哈希表。我按照老师的要求创建了哈希表,但是有一个问题。我必须获得x和y值是我的对象之一。但是系统仍然找不到x。

public class HashDatastructure{

  public static void main(String[] args){

    java.util.Hashtable kreise = new java.util.Hashtable();

    for(int i = 0; i < 6; i++){
      kreise.put(new Integer(i), new Kreis(120, 120, 60));
    }
    System.out.println(kreise.get(3).toString() + " is 4. Object
                       and this Object's X Value: "
                     + kreise.get(3).x + " || Y Value: ");
  }
}

这是我的克雷伊斯班:

public class Kreis extends Object{
    public int x; //Mittelpunkt-x
    public int y; // Mittelpunkt-y
    public int radius;
    public final double PI = 3.14159; //Constant Variable for pi
    public static int kreisCounter = kreisZaehler();
    public static int counter = 0;


    public Kreis(int x, int y, int radius){
      this.x = x;
      this.y = y;
      this.radius = radius;
      kreisCounter();
    }

    private static int kreisZaehler(){
      counter++;
      return counter;
    }
    public void setRadius(int wert){
      radius = wert;
    }

    public double getFlaeche(){
      return radius * radius * PI;
    }

    public double getUmfang(){
      return 2 * radius * PI;
    }

}

1 个答案:

答案 0 :(得分:0)

我不知道您所说的“匿名对象”是什么意思,但是您使用的是原始类型,这通常不是一个好主意。而是告诉编译器kreis包含哪种对象:

java.util.Hashtable<Kreise> kreise = new java.util.Hashtable<>();
// ----------------^^^^^^^^---------------------------------^^

然后,编译器将知道get返回一个Kreis对象,该对象具有x等。 (旁注:将x设为私有并为其提供类似getX的访问器可能更好。)

要在Generics Java Tutorial中进行探索的更多内容。

如果出于某种原因必须使用原始类型,则可以在检索时强制转换为Kreis

// NOT recommended
System.out.println(kreise.get(3).toString() + " is 4. Object and this Object's X Value: "
                 + (((Kreise)kreise.get(3)).getX() + " || Y Value: ");
// -----------------^^^^^^^^^-------------^-^^^^^^

(请注意,我假设您将x设为私有,并为其提供了访问器。)