Eclipse IDE - Interface/Serviços

Galera do mal,
Venho com um problema… que na verdade não é um problema…
Seria mais uma melhor prática de desenvolvimento.

Exemplo. digamos ter o seguinte trecho de código:

public interface Carro {

	public void ligarCarro() throws velaException;

}
	public class Fiat implements Carro {
	
	/**
	 * Método para tentar ligar o carro
	 * 
	 */
		public void ligarCarro() throws velaException{
			System.out.println("vela queimada");
		}
	
	}
	
	
	public static void main(String[] args){
		Carro fiat = new Fiat();
		fiat.ligarCarro();
	}

Ai vem a dúvida:
Sabendo que a classe que esta a utilizar o serviço é Fiat()
Porque ao usar o método ligarCarro();
não consigo visualizar o comentário do método?

Obrigado pela atenção :wink:

A visualização do comentário é feita pela IDE da seguinte forma: a IDE não fica analisando ou até simulando a execução de seu código para perceber que, naquele momento, a variável “fiat” (que é do tipo interface Carro) contém um objeto do tipo class Fiat.
Ela, para simplificar*, só sabe que ligarCarro é um método da interface Carro, portanto ela não mostra o comentário que foi estipulado para o tipo class Fiat.

  • Você pode até pedir para o pessoal que mantém o projeto Eclipse que façam uma modificação no Eclipse para que ele analise o código, faça uma análise de fluxo e determine que naquele ponto do seu programa só é possível que a variável se refira a um objeto da classe Fiat, para apresentar o comentário correto. Não deve ser muito complicado, porque eles fazem coisas mais complicadas lá que você nem imagina. Mas é questão de desenferrujar seu inglês e pedir aqui:

https://bugs.eclipse.org/bugs/

Interessante,

Será que foi só eu que reparei isto???
Alguem já postou sobre isso, para possível melhoria??

Acho muito pouco provável que essa melhoria aconteça. Não só seria um trabalho enorme para a IDE, como na prática não faria muito sentido. Muitas vezes, o objeto virá do banco, ou de uma factory, que pode inclusive usar reflexão.

Sem falar que, na maior parte das vezes, só o javadoc da classe pai é suficiente. Note que no seu caso, o seu javadoc também poderia ser movido para cima sem prejuízos.

De qualquer maneira, recomenda-se fazer o seguinte: incluir o javadoc na interface, não na classe que implementa a interface. Sobreescreva o javadoc apenas se houver algum detalhe macabro de implementação que você tenha de notar. Por exemplo,

 public  interface Carro {  
     /**
      * Liga o carro.
      * @throws VelaException Quando uma vela estiver queimada. 
      */
     void ligarCarro() throws VelaException;  
 } 
public class Fiat implements Carro {  
       /**
        * Apenas tenta ligar o carro, senão é necessário chamar o mecânico neste caso. 
        */
     public void ligarCarro() throws VelaException{  
         System.out.println("vela queimada");  
     }  
   
}  

Sim,

Também pensei nesta opcão…
De criar o comentário na Interface,
Porém só nao queria misturar as coisas…
Oque é Interface, do método em si,

imagine por exemplo impressoras ECFs,
que praticamente nao tem padrão que usa
DLL para comunicação…

a interface facilita isso, só que ai a documentação
é diferente para cada tipo de impressora a ser utilizada :wink:

PS.: São apenas comentários ^^
Obrigado aqueles que postaram observações

Sim, a documentação é diferente para cada impressora. Mas nesse caso a documentação deve ser visualizada no browser mesmo (javadoc) em vez de sê-la vista só por um tooltip gigante. É como mostrei no exemplo acima: ponha uma descrição genérica na interface do método (ligarCarro é sempre a mesma coisa, mesmo para um carro elétrico) mas se quisermos olhar o javadoc de ligarCarro para um objeto da classe CarroEletrico, basta olhar na documentação da classe CarroEletrico, onde está escrito que esse método nunca irá lançar uma VelaQueimadaException porque não há velas em um carro elétrico.

Sim…

Obrigado pelas observações…
Só continuando acreditando,
que isso seria um benefício (+)
para a IDE, se ela conseguisse visualizar isso :smiley:

teoricamente ela saberia que a class é Fiat,
soh teria que puxar o método de lá :slight_smile:

Mas, não importa… seria questão apenas de 'facilitador’
Para preguiça de apertar Ctrl no método e olhar o fonte

Mais uma vez, obrigado pelos comentários