Java 使用带双大括号初始化的StringBuilder

Java 使用带双大括号初始化的StringBuilder,java,stringbuilder,double-brace-initialize,Java,Stringbuilder,Double Brace Initialize,双大括号初始化有助于更好地了解java代码的上下文 不幸的是,StringBuilder无法与双大括号初始化一起使用,如 final String[] array = new String[] {"A", "B"}; System.out.println(new StringBuilder(){{ for (String s : array){ append(s +

双大括号初始化有助于更好地了解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();
        }
    });

如果您试图实现的只是从字符串数组创建字符串,则可以使用:


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

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

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");
            }
        }
    });

替代方法不可接受,因为它更改了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);

字符串输出只是我的示例-我想找到使用双大括号初始化的可能性字符串输出只是我的示例-我想找到使用双大括号初始化的可能性StringBuilder用于动态构造各种字符串,双括号init通常用于构造静态常量的完全相反的对象。也许你的实际情况对我来说并不清楚,但你想做的并不正确。这似乎是他自己问题的答案。因此,投票决定不开放。
    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);