d..*_*d.. 10 .net java tostring
我过去曾经ToString()谦虚地使用过,而且在很多情况下我发现它非常有用.但是,我对这种方法的使用几乎没有理由将这种方法放在其他方面System.Object.我的猜测是,在进行的工作和为了提出.NET框架的初始设计而举行的会议期间的某些时候,我们认为必须 - 或者至少非常有用 - 包含一个ToString()方法,由.NET框架中的所有内容实现.
有谁知道具体原因是什么?我是否错过了大量ToString()证明有用的情况System.Object?最初的原因是ToString()什么?
非常感谢!
PS - 再说一遍:我不是在质疑这个方法,也不是暗示它没有用,我只是想知道是什么让它变得有用System.Object.
旁注 - 想象一下:
AnyDotNetNativeClass someInitialObject = new AnyDotNetNativeClass([some constructor parameters]);
AnyDotNetNativeClass initialObjectFullCopy = AnyDotNetNativeClass.FromString(someInitialObject.ToString());
这不是很酷吗?
EDIT(1):
(A) - 基于一些答案,似乎.NET语言从Java继承了这一点.所以,我正在为主题和标签添加"Java".如果有人知道为什么这是用Java实现的,那么请说清楚!
(B) - 静态假设FromString与序列化:当然,但这是一个完全不同的故事,对吗?
Dav*_*ert 14
它最初被添加到Object以进行调试和记录.如果你查看JavaDoc for Object.toString(http://java.sun.com/javase/6/docs/api/java/lang/Object.html#toString()),你可以推断出它,因为它输出classname,后跟@,后跟对象哈希码的无符号十六进制表示.我能看到的唯一一个非常有用的地方是日志或控制台.
但Java创建者故意将此方法保留为非final,因此子类可以(并且应该)覆盖它,而不是输出更多特定于子类的信息.他们可能刚刚实现了JVM,以便将对象传递给任何需要字符串的方法,它会生成上面的哈希值并将其传递给方法,但是它们很好并且将它实现为一种方法,你可以这么方便覆盖.
它在Object级别实现,因此您可以安全地假设任何对象都可以写入日志/控制台.它是Java语言中的一个方便的假设.
在不讨论它的优点的情况下,我相信这源于C# - Java的鼓舞人心的语言.创建它(对于两种语言)的原因是提供一种方法来获取任何对象的实例的字符串表示,包括对不同文化的支持.就那么简单.
| 归档时间: |
|
| 查看次数: |
750 次 |
| 最近记录: |