mid*_*ite 0 java overloading object printstream
您的位置是:http://developer.android.com/reference/java/io/PrintStream.html#print%28float%29
只有一个功能可以满足所有目的:
public void print (Object o) {
if (o == null) {
// print "null"
} else {
// print o.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
更详细的说明.例如,internal_print(String str)
是一个写入打印流的函数.那么唯一需要的功能是:
public void print (Object o) {
if (o == null) {
internal_print( "null" );
} else {
internal_print( o.toString() );
}
}
Run Code Online (Sandbox Code Playgroud)
对于其他float
,int
,char
,long
,等超载,我能想象他们只是喜欢:
public void print (float o) {
if (o == null) {
internal_print( "null" );
} else {
internal_print( o.toString() );
}
}
public void print (int o) {
if (o == null) {
internal_print( "null" );
} else {
internal_print( o.toString() );
}
}
public void print (char o) {
if (o == null) {
internal_print( "null" );
} else {
internal_print( o.toString() );
}
}
public void print (long o) {
if (o == null) {
internal_print( "null" );
} else {
internal_print( o.toString() );
}
}
...
Run Code Online (Sandbox Code Playgroud)
甚至只是调用杀手功能print (Object o)
.
你能解释一下吗?非常感谢!!
历史原因:PrintStream
该类自Java 1.0以来就存在,早在添加自动装箱之前(1.5).
自动装箱是使你能够传递一个原始类型的原因print(Object o)
.没有它PrintStream
必须分别为每个基本类型实现重载.
顺便说一下,print(..)
原始类型的实现更像是:
public void print (int o) {
print(String.valueOf(o));
}
Run Code Online (Sandbox Code Playgroud)
...以及String.valueOf(..)
基本委托给包装类中的方法的实现,例如Integer.toString(int)
和Long.toString(long)
.您可以在docjar上阅读源代码.
归档时间: |
|
查看次数: |
109 次 |
最近记录: |