类StringBuilder
定义了四个构造函数,但没有一个接受StringBuilder
,但以下编译:
StringBuilder sb = new StringBuilder(new StringBuilder("Hello"));
这是否意味着编译器在内部以某种方式将匿名StringBuilder
对象转换为String?
答案 0 :(得分:9)
StringBuilder
是CharSequence
(它实现了该接口)和there is a constructor taking a CharSequence
。这就是给定代码编译的原因:
StringBuilder sb = new StringBuilder(new StringBuilder("Hello"));
此构造函数所做的只是使用给定StringBuilder
的内容初始化新CharSequence
。结果与
StringBuilder sb = new StringBuilder("Hello");
答案 1 :(得分:5)
有一个构造函数接受CharSequence
,它是一个由StringBuilder和String(以及其他类)实现的接口。
http://docs.oracle.com/javase/8/docs/api/java/lang/CharSequence.html