如何获取匿名对象参数?
How to get Anonym Objects parameters?
我正在尝试将我的匿名对象从 class 添加到哈希表。我按照老师的要求创建了哈希表,但有一个问题。我必须获得我的对象之一的 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: ");
}
}
这是我的克瑞斯 Class:
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;
}
}
我不知道你所说的 "anonymous objects," 是什么意思,但你使用的是 原始类型,这通常不是一个好主意。相反,告诉编译器 kreis
包含什么样的对象:
java.util.Hashtable<Kreise> kreise = new java.util.Hashtable<>();
// ----------------^^^^^^^^---------------------------------^^
然后,编译器会知道get
returns 一个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
设为私有并为其提供访问器。)
我正在尝试将我的匿名对象从 class 添加到哈希表。我按照老师的要求创建了哈希表,但有一个问题。我必须获得我的对象之一的 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: ");
}
}
这是我的克瑞斯 Class:
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;
}
}
我不知道你所说的 "anonymous objects," 是什么意思,但你使用的是 原始类型,这通常不是一个好主意。相反,告诉编译器 kreis
包含什么样的对象:
java.util.Hashtable<Kreise> kreise = new java.util.Hashtable<>();
// ----------------^^^^^^^^---------------------------------^^
然后,编译器会知道get
returns 一个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
设为私有并为其提供访问器。)