Как получить параметры объектов Anonym? - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь добавить свои анонимные объекты из класса в Hashtable.Я создал мой Hashtable, как хочет мой учитель, но есть одна проблема.Я должен получить значения х и у одного из моих объектов.Но система не может найти х в любом случае.

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: ");
  }
}

А вот и мой класс Kreis:

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 голосов
/ 30 марта 2019

Я не знаю, что вы подразумеваете под "анонимными объектами", но вы используете raw types , что, как правило, не очень хорошая идея.Вместо этого сообщите компилятору, какой тип объекта kreis содержит:

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

Затем компилятор узнает, что get возвращает объект Kreis, который имеет x и тому подобное.(Примечание: возможно, лучше сделать x приватным и предоставить для него такой элемент доступа, как getX.)

Дополнительные сведения для изучения в Универсальном руководстве по Java .

Если по какой-то причине у вас есть для использования необработанных типов, вы можете привести к 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 закрытым иобеспечьте доступ к нему.)

...