在某种情况下,您将为方法使用类型为Object
的参数并在内部调用toString()
而不是使用String
参数并使用方法的用户处理字符串转换?
示例方法为log(Object)
与log(String)
后者的模棱两可性较小,但更灵活,但可能会重复出现log(object.toString())
。
是否存在某种形式的javadoc约定,可以用来明确表示该方法的Object
变体将使用Object#toString
-避免该方法的使用者忘记重写{{ 1}}?
答案 0 :(得分:1)
在大多数情况下,method(String)
比method(Object)
更好,因为它更加明确,它清楚地传达了您的方法的约定-调用者知道您期望String
而不是Object
,您将在其上致电toString()
。
但是,如果您实施例如使用info(String format, Object arg)
之类的日志记录库,最好使用Object
。日志记录库并不关心参数是否为String
,Long
,Integer
等,并且与其定义数百个重载方法,不如定义一个采用Object
。
答案 1 :(得分:0)
如果方法的代码可能需要调用Object
以外的方法,例如String
,则有一个明确的情况是定义类型toString()
而不是getClass()
的参数或hashCode()
。
另一个考虑因素是:哪个代码可以控制字符串的内容。对于String
参数类型,它是调用代码。对于Object
参数类型,它可以是调用的代码,也可以是toString()
的实现。
答案 2 :(得分:-1)
“您可以在对象上使用toString()来获取该对象的字符串表示形式。
// Java program to illustrate
// working of toString() method
class Best_Friend {
String name;
int age;
String college;
String course;
String address;
Best_Friend
(String name, int age, String college, String course, String address)
{
this.name = name;
this.age = age;
this.college = college;
this.course = course;
this.address = address;
}
public static void main(String[] args)
{
Best_Friend b =
new Best_Friend("Gulpreet Kaur", 21, "BIT MESRA", "M.TECH", "Kiriburu");
System.out.println(b);
System.out.println(b.toString());
}
}
结果:
Output: Best_Friend@232204a1
”