<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Hello Eric and all,<br>
<br>
Eric Crahen wrote:
<blockquote
 cite="mided0c429e0702121548t5cd84af7x2e29af2419706cc6@mail.gmail.com"
 type="cite">Along those same lines a protected default constructor
would help too<br>
  <br>
  <div><span class="gmail_quote">On 2/12/07, <b
 class="gmail_sendername">Eric Crahen</b> &lt;<a
 href="mailto:eric.crahen.lists@gmail.com">eric.crahen.lists@gmail.com
  </a>&gt; wrote:</span>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Do
the NOPLogger methods need to be final? I was hoping to subclass this
for use in unit testing. I basically have to write my own NOPLogger in
order to be able to override error() and other things at different to
assert the correct logging happens. Can these methods be made
non-final? People use these through an inteface anyways, is there a
benefit I'm missing?
    <span></span><br clear="all">
    <br>
-- <br>
    <span class="sg"><br>
- Eric</span><br>
  </blockquote>
  </div>
</blockquote>
<br>
I think for a common API like SLF4J it is very good to have
implementations final:<br>
<br>
SLF4Js goal is to be used in libraries, other APIs and applications. If
there is need to change things,<br>
the interfaces have to be stable. The implementations should still have
the chance to be changed WITHOUT<br>
heavily caring about possible inherited classes.<br>
I.e. this is one major problem in the development of log4j - there is
so much usage that each very little change<br>
has to be proven binary compatible. Thousands of people did not care
about using just interfaces and the SPI,<br>
they just hacked "quick and dirty" with inheritation of classes which
were created with internal use intention.<br>
<br>
I see this one just the other way round: Make any class final which is
not part of the public API (Interfaces, abstract classes) and the
intended<br>
SPI. Make utitlity classes final. Make all wrappers final.<br>
<br>
If someone has need to change something, the license offers full rights
to do that. Make a copy and change it.<br>
Although there is the decorator pattern....<br>
<br>
Regards<br>
Boris<br>
<br>
</body>
</html>