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()andappendParsedText()并从公共方法中调用私有方法。

所以它看起来像这样:

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

我会假设以下工作,但我在我的类中定义一个方法,该方法仅用于该类的另一种方法。对我来说,这似乎有点浪费。

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 回答