Meus caros, em uma das N-ésimas “refatorações” de um projeto pessoal meu, entrei num ar franciscano e loguei JDeveloper/Eclipse/Netbeans pro ar e adotei um editor com poucos recursos (Mas tem Destaque!).
Para melhor trabalhar com o código começei fazendo classes aninhadas. Eis o conteudo de Main.java:
/**
* OpenCafe - Ensaio
* Estamos testando certos conceitos aqui.
*/
package opencafe;
import java.util.List;
import java.util.Vector;
import static java.lang.System.*;
/**
* Classe Inicial do Sistema
*/
public class Main
{
public static void main(String[]args)
{
out.println("Opa!");
}
}
/**
* Classe que baseia toda e qualquer coisa relevante ao negócio.
*/
abstract class Entidade
{
private Long id;
public void setId(Long id)
{
this.id=id;
}
public Long getId()
{
return id;
}
}
/**
*
*/
abstract class Persistor<E extends Entidade>
{
public abstract void set(E ent);
public abstract void delete(E ent);
public abstract List<E>select(E ent);
}
/**
*
*/
class MemoryPersistor<E extends Entidade>extends Persistor
{
private List<E>dados;
public void set(E ent)
{
if(dados==null)
dados=new Vector<E>();
dados.add(ent);
}
public void delete(E ent)
{
if(dados!=null)
dados.remove(ent);
}
public List<E>select(E ent)
{
List<E>resultado=new Vector<E>();
if(dados!=null)
{
// TODO - vamos delegar aos herdeiros a tarefa de seleção.
doExtraConstraints(ent);
}
return resultado;
}
protected void doExtraConstraints(E ent)
{
}
}
E essa a saída de erro:
javac "Main.java" (no diteróio: /home/sombriks/variados/opencafe)
Main.java:56: opencafe.MemoryPersistor is not abstract and does not override abstract method select(opencafe.Entidade) in opencafe.Persistor
class MemoryPersistor<E extends Entidade>extends Persistor
^
1 error
Compilation failed.
E se eu não estiver doido não há erro nesta construção! Aliás o bentido método abtrato está “impementado”!
Acho que é bug porque ao fazer uma estrutura de pacotes, ou ao menos separar as classes em arquivos distintos O problema Evapora.
EDIT – O parágrafo acima não é verdade. Todavia continua a dúvida abaixo…
Alguém imagina que diabos eh isso?!
ps: versão da jvm:
sombriks@comander:~/variados$ java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)
sombriks@comander:~/variados$ javac -version
javac 1.6.0
sombriks@comander:~/variados$