-1

双括号初始化有利于更好地了解 Java 代码的上下文。

不幸的是,StringBuilder 不能与双括号初始化一起使用,例如

    final String[] array = new String[] {"A", "B"};
    System.out.println(new StringBuilder(){{
                           for (String s : array){
                               append(s + "\n");
                           }
                       }}.toString());

这是一个很好的选择吗?有什么更好的建议吗?我对这个问题的意图不是找到字符串连接的方法。我的目的是找到一种在 StringBuilder 中使用双括号的方法。

    final String[] array = new String[] {"A", "B"};
    System.out.println(new Object(){
        @Override public String toString(){
            StringBuilder stringBuilder = new StringBuilder();
            for (String s : array){
                stringBuilder.append(s + "\n");
            }
            return stringBuilder.toString();
        }
    });
4

3 回答 3

0

使用额外的实用程序类可以进行双括号初始化。和

public static class StringBuild{
    private StringBuilder stringBuilder = new StringBuilder();

    public void append(String string){
        stringBuilder.append(string);
    }

    @Override
    public String toString(){
        return stringBuilder.toString();
    }
}

我可以写吗

    final String[] array = new String[] {"A", "B"};
    System.out.println(new StringBuild(){{
            for (String s : array){
                append(s + "\n");
            }
        }
    });
于 2014-05-12T08:20:17.233 回答
0

如果您想要实现的只是从字符串数组创建一个字符串,您可以使用Arrays.toString() 方法

System.out.println(Arrays.toString(array));

此方法返回指定数组内容的字符串表示形式。

于 2014-05-12T08:15:51.737 回答
0

替代方法是不可接受的,因为它更改了 StringBuilder 对象的类。

在您的程序中,第一个选项不起作用,因为 StringBuilder 是最终的。而且您不能更改最终课程。您可以使用以下代码,该代码适用于所有情况。

    final String[] array = {"a", "b"};
    StringBuilder sb = new StringBuilder(new Object(){
        @Override
        public String toString() {
            String str = "";
            for(String st : array){
                str+=st;
            }
            return str;
        }
    }.toString());
    System.out.println(sb);
于 2014-05-12T09:05:17.867 回答