0

Javaはかなり新しいので、この表現が理にかなっていることを願っています。

パブリックメソッド内で数回呼び出す必要のあるJavaコードがありますが、パブリックメソッド内に配置して呼び出すことにより、そのコードを再利用するにはどうすればよいですか?

たぶん私は自分のために物事を難しくしているので、ここにコードサンプルがあります。

public static final String parseText( final String text )
{
    StringBuffer parsedText = new StringBuffer();

    private static void appendParsedText( String snippet )
    {
        if ( parsedText.length() > 0 )
        {
            parsedText.append( ", " + snippet );
        }
        parsedText.append( snippet );
    }

    if ( text.contains( "string1" ) )
    {
        parsedText.appendParsedText("string1");
    }

    if ( text.contains( "string2" ) )
    {
        parsedText.appendParsedText("string2");
    }

    if ( text.contains( "string3" ) )
    {
        parsedText.appendParsedText("string3");
    }

    return parsedText.toString();
}

コードは無効ですが、うまくいけば、私が達成しようとしていることには意味があります。join()Apache Commonsにメソッドがあることは知っていますがStringUtils、やり過ぎのようです。このメソッドは、これを実行する必要がある唯一の場所です。

4

2 に答える 2

1

あなたが言ったように、Javaはそのような構造をサポートしていないので、コードはコンパイルされていません。parseText()とをappendParsedText()個別に定義し、パブリックメソッドからプライベートメソッドを呼び出すことをお勧めします。

したがって、次のようになります。

public static final String parseText( final String text ) {
    return appendParsedText(text);
}

private static String appendParsedText( String snippet ) {
    StringBuffer parsedText = new StringBuffer();
    if ( parsedText.length() > 0 ) {
        parsedText.append( ", " + snippet );
    }
    parsedText.append( snippet );

    if ( text.contains( "string1" ) ) {
        accessTypes.appendAccessTypes("string1");
    }

    if ( text.contains( "string2" ) ) {
        accessTypes.appendAccessTypes("string2");
    }

    if ( text.contains( "string3" ) ) {
        accessTypes.appendAccessTypes("string3");
    }

    return parsedText.toString();
}
于 2012-08-22T04:35:49.097 に答える
0

次のように機能すると思いますが、クラスの他の1つのメソッドでのみ使用されているメソッドをクラスで定義しています。私にはこれは少し無駄に思えます。

private static final StringBuffer appendParsedText( StringBuffer parsedText, String snippet )
{
    if ( parsedText.length() > 0 )
    {
        return parsedText.append( ", " + snippet );
    }
    return parsedText.append( snippet );
}

public static final String parseAccess( final String text )
{
    StringBuffer parsedText = new StringBuffer();

    if ( text.contains( "string1" ) )
    {
        parsedText = appendParsedText( parsedText, "string1" );
    }

    if ( text.contains( "string2" ) )
    {
        parsedText = appendParsedText( parsedText, "string2" );
    }

    if ( text.contains( "string3" ) )
    {
        parsedText = appendParsedText( parsedText, "string3" );
    }

    return parsedText.toString();
}
于 2012-08-22T05:51:43.743 に答える