【发布时间】:2017-01-19 10:34:08
【问题描述】:
我有以下重复的代码,我只想写一次(请注意,这只是我想要实现的示例):
public class A {
public void doSomething(StringBuffer additional, int start, int end) {
try {
StringBuilder strBuilder = callMethodA();
strBuilder.append(additional, start, end);
B.doSomething(strBuilder, additional, start, end);
} catch (Exception e) {
// do something
}
}
public void doSomething(StringBuilder additional, int start, int end) {
try {
StringBuilder strBuilder = callMethodA();
strBuilder.append(additional, start, end);
B.doSomething(strBuilder, additional, start, end);
} catch (Exception e) {
// do something
}
}
...
}
public class B {
public static void doSomething(StringBuilder strBuilder,
StringBuilder additional, int start, int end) {
// Do some code specific to "additional" StringBuilder
...
}
public static void doSomething(StringBuilder strBuilder,
StringBuffer additional, int start, int end) {...}
// Do some code specific to "additional" StringBuffer
...
}
如您所见,代码是相同的,除了“additional”参数在类A的第一个方法StringBuilder和第二个@987654325 @。
如何修改我的代码以避免重复? B 类中的逻辑对于 StringBuffer 和 StringBuilder 是不同的。
我不能使用AbstractStringBuilder,因为它是一个受保护的类。
我正在使用 Java 6。
谢谢
【问题讨论】:
-
"B 类中的逻辑对于 StringBuffer 和 StringBuilder 是不同的。"有什么不同?
-
例如,如果我想在 StringBuilder 的情况下创建一个新的 StringBuilder,在 StringBuffer 的情况下创建一个新的 StringBuffer。
-
@RC。我的意思是她的算法的不同之处在于需要使用这两个类并且显然是必不可少的。
-
@Kayaman 哎呀,我以为这是 OP 评论。如果 OP 真的真的(我的意思是真的)需要
StringBuffer(我也怀疑)那么答案可能是一些包装器和一个通用接口
标签: java stringbuilder stringbuffer