如何在Java的公共方法中声明私有方法?

如何在Java的公共方法中声明私有方法?,java,Java,对Java来说相当陌生,所以我希望这个措词有意义 我有一些Java代码需要在公共方法中调用几次,如何通过将其放置在公共方法中并调用它来重用这些代码 也许我是在给自己制造麻烦,所以下面是代码示例 public static final String parseText( final String text ) { StringBuffer parsedText = new StringBuffer(); private static void appendParsedText(

对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();
}

虽然代码是无效的,但希望它对我试图实现的目标有意义。我知道Apache Commons中有一个
join()
方法
StringUtils
,但这似乎有些过分,这个方法是唯一需要实现的地方。

正如您所说,代码没有编译,因为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();
}

我假设下面的方法可以工作,但是我在我的类中定义了一个方法,该方法只在类的另一个方法中使用。对我来说,这似乎有点浪费

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

我不能这么做。但是没有必要,只需将其声明为常规私有方法。@DmitryBeransky我已经发布了一个问题的答案,这就是你所说的吗?没有办法定义另一个只在
parseText
方法中使用的方法吗?嗨,丹,谢谢你尝试回答我的问题。不幸的是,我在示例代码中有输入错误,所以示例代码可能没有意义,您使用的是您所拥有的。