大概是这样的:
MyFixedLengthStringBuilder sb = new MyFixedLengthStringBuilder(2);
sb.append("123"); // <=== throws ArrayIndexOfOutBoundsException!
其余的将完全相同。基本上我需要一个 StringBuilder
那永远不会成长。
我明白了 StringBuilder
是最终的,因此不能扩展。代表团似乎是我唯一的途径。你有没有看到我需要的其他方法/想法/解决方案?
3条答案
按热度按时间dojqjjoe1#
如果我可以创建自己的类,它会像这样,并且根据需求可以添加更多的东西
rur96b6h2#
你可以这样做。您仍然需要一些重载方法来处理不同的参数计数和类型,但不必是完全委托。这只是一个简单的例子。它可以被编成一个班。编辑:修改以处理大多数方法。
印刷品
另一个选项(但有它自己的问题)是设置一个计时器来定期检查stringbuilder的大小。
dw1jzc5e3#
首先,客户需求没有得到充分的说明:他们是否请求一个与赋值兼容的类
StringBuilder
或者他们只是请求一个具有特定功能的类?前者在技术上是不可能的,因为
StringBuilder
声明为final
,因此任何类型的变量StringBuilder
都会有同样的行为。后者允许您使用自己的方法指定自己的新类。至于要求,客户可能会指定“我只需要从
StringBuilder
,因为他们没有费心去精确地检查他们需要什么。我认为,如果双方都投入一些工作来缩小需求范围,那么很可能您将能够使用一些适合客户需求的方法来创建一个类。是的,正如你已经提到的,在这种情况下,使用一篇与原作结合的作文是一个好主意
StringBuilder
班级。当您要求进行黑客攻击时,理论上您可以编写自己的
java.lang.StringBuilder
并提供一个定制ClassLoader
这将加载您的实现,而不是标准的java实现。不过,我希望这显然不是一个好的做法。