一个简单的设计问题。
示例代码:
Integer int1 = new Integer(20);
System.out.println(Integer.toBinaryString(int1));
为什么JDK设计不像以下那样?那么,toBinaryString函数返回所需的结果吗?
System.out.println(int1.toBinaryString());
除了静态函数的广泛可用性之外,这种设计方法的其他原因是什么?他们使用任何特定的设计模式吗?如果是,那是哪种模式?
答案 0 :(得分:15)
这是因为你不能有两个同名的方法,一个静态和一个实例。再次为同一功能设置两个不同的方法名称会让人感到困惑。
使用静态方法似乎更合乎逻辑,因为在这种情况下,您不必在获取其二进制表示之前将int“包装”到Integer中,并且它同时满足两个目的(int
的二进制字符串和Integer
)。
答案 1 :(得分:9)
您的示例代码会创建Integer
的实例,然后将其取消装箱。没有必要:
int int1 = 20;
String binary = Integer.toBinaryString(int1);
如果它是一个实例方法,你将强制创建一个Integer
实例,仅将int
转换为二进制表示,这会很烦人
换句话说:避免不必要地创建对象。
答案 2 :(得分:6)
当添加此方法时,在JDK1.0.2中,没有自动装箱,并且JVM比现在慢得多。我想,使用这个静态方法可以轻松地将int和Integer转换为二进制字符串,而无需为了将int转换为二进制而创建新的Integer实例。
答案 3 :(得分:0)
int,char,double ...这些是默认数据类型,这些不是对象。方法应该是Object not datatype的一部分。
这种静态方法比实例方法更有效。