StringBuilder 构造函数接受一个 StringBuilder 对象——为什么?

StringBuilder constructor accepts a StringBuilder object - why?

class StringBuilder 定义了四个构造函数,其中 none 接受一个 StringBuilder,但以下编译:

StringBuilder sb = new StringBuilder(new StringBuilder("Hello"));

这是否意味着匿名 StringBuilder 对象被编译器以某种方式在内部转换为字符串?

一个StringBuilder is a CharSequence (it implements that interface), and there is a constructor taking a CharSequence。这就是给定代码编译的原因:

StringBuilder sb = new StringBuilder(new StringBuilder("Hello"));

这个构造函数所做的只是用给定 CharSequence 的内容初始化新的 StringBuilder。结果与

相同
StringBuilder sb = new StringBuilder("Hello");

有一个接受 CharSequence 的构造函数,它是一个由 StringBuilder 和 String(以及其他 类)实现的接口。

http://docs.oracle.com/javase/8/docs/api/java/lang/CharSequence.html