我正在尝试将我的匿名对象从类添加到哈希表。我按照老师的要求创建了哈希表,但是有一个问题。我必须获得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;
}
}
答案 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
设为私有,并为其提供了访问器。)