Java相当新,所以我希望措辞有意义。
我有一些Java代码需要在公共方法中调用几次,如何通过将其放在public方法中并调用它来重用该代码?
也许我正在为自己努力,所以这是代码示例。
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
方法,但它似乎有点矫枉过正,这种方法是唯一需要这样做的地方。
答案 0 :(得分: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();
}
答案 1 :(得分: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();
}