我可以更改getClass()。getName()方法的行为

时间:2016-01-31 18:53:56

标签: java

我有一个Class Foo。

Foo toy=new Foo("toy");

Foo shoe=new Foo("shoes");

我们可以做点什么吗

1 toy.getClass().getName()会打印:toy

2 shoe.getClass().getName()会打印:shoe

1 个答案:

答案 0 :(得分:1)

不,不容易。 Class#getName()用于反射和调试,是Java运行时的一部分。由于java.lang.Class是最终版,因此您无法覆盖它(不重要,因为getClass()无论如何返回Class并且与您的子类没有任何关系,即使你能做到这一点)

相反,只需使用toy.toString()并将一个toString方法添加到Foo类,该类输出传递给构造函数的任何值。