使い回し #3

以下のコードはとても重大な欠陥があります。さてそれは何でしょう、という話はあるよね。

package example;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

    private StringBuilder builder = new StringBuilder();

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        builder.setLength(0);
        builder.append("<html>");
        builder.append("<p>Hello</p>");
        builder.append("</html>");

        response.getWriter().write(builder.toString());
    }
}

あと、使い回すとなるとそれぞれで使い回されるインスタンスの状態とか気にしなくてはいけなくて、文書されない内部的な事前条件なんかが追加されるわけでそれはよろしくないなぁ、とか。