第1个回答 2009-04-02
Object的方法是不能覆盖的。
如果仅仅是想把你自己定义的一系列类的toString方法定义好,那么可以用反射。
class YourObject
{
public string toString ()
{
getClass ().getFields () ;
for each field
print (field.name = field.value ) ;
}
}
估计用动态修改字节码的办法也不行,因为Object是早于你的类加载的。而且用的是BootStrap class loader。
要不然就单独定义一个classLoader,重新加载Object类,然后用字节码修改的方式来完成。感觉很麻烦。
还有一种方法相对简单一些,就是把Object的源代码拿过来,改成你需要的代码。编译后,替换原来的JRE中的class文件。但这种方法不能改动已经覆盖了toString实现的那些类。
不知道你想达到什么目的?
第2个回答 2009-04-02
public class Car{
String maker;
String color;
double value;
public Car()
{
this.maker="";
this.color="";
this.value=0.0;
}
public Car(String maker,String ccolor,double value)
{
this.maker=maker;
this.color=ccolor;
this.value=value;
}
//Override
public String toString(){
return "制造地:"+this.maker +" 颜色:"+this.color+" 价格:"+this.value;
}
public static void main(String[] args){
Car Toyota=new Car("Japan","red",25000d);
System.out.println(Toyota.toString());
}
} 可以直接执行
第3个回答 推荐于2018-03-07
public class Car{
String maker;
String color;
double value;
public String toString(){
return ("\nMaker: " + maker + "\nColor: " + color + "\nvalue: " + value);
}本回答被提问者和网友采纳
第4个回答 2009-04-02
public String toString(){
return maker+","+color+","+value;
}