Interface

5 respostas
E

Olá;

Estou com dificuldades para implementar minha primeira interface. A questão é a seguinte:

Tenho uma interface chamada IniSiscom que tem um VETOR onde eu preciso acessar a posição VETOR[0] que está declarado desta forma.

public interface IniSiscom {
    public String[] Inicio = {
                                "D:\JavaProject\Siscom\Icones\New.JPG",
                                "D:\JavaProject\Siscom\IniSiscom.txt"
                             };
    
}

Preciso acessar este vetor da interface de dentro da classe CadCli. Alguém ajuda ?

A principio criei uma classe interna assim:

class Inicio implements IniSiscom{

}

NetBeans 4.01EA2
Java 5.0

Valeu.

5 Respostas

skill_ufmt

Bom,

Interface:

Você apenas define seus métodos e seus parametros.

Class:

Você deve implementar este método que tem na interface.

Quando você cria uma interface e declara o cabeçalho dos métodos lá, e logo depois, cria uma classe implementando esta interface, voce deve obrigatóriamente implementar estes métodos, ou seja, colocar corpo nele, não é possível acessar o método, pois na realidade ele não faz nada ainda se não for implementado.

Ex:

public interface Pessoa{

public String buscaNomePessoa();

}

public class NomePessoa implements Pessoa{

public String buscaNomePessoa(){
//fazer a busca pelo nome da pessoa e retorna 
return nomePessoa;
}

}

certo?

E

Caro colega vê se pode me ajudar.

package siscom.br.eti.excon.Classes; 
public class Config { 
    public String[] Imagens = { 
                                "D:\JavaProject\Siscom\Icones\" 
                             }; 
    public Config() { 
    } 
    
    public String getImagens(){ 
        return Imagens[0]; 
    } 
} 

package siscom.br.eti.excon.Interfaces; 
public interface IniSiscom { 
    public String getImagens(); 
} 

package br.eti.excon.Forms; 
public class CadCli extends javax.swing.JInternalFrame { 
    public CadCli() { 
        initComponents(); 
        btnNovo.setIcon(new javax.swing.ImageIcon(Caminho)); 
    } 
} 

package siscom.br.eti.excon.Forms; 
import br.eti.excon.Forms.*; 
import siscom.br.eti.excon.Interfaces.IniSiscom; 

public class Siscom extends javax.swing.JFrame { 
    public Siscom() { 
        initComponents(); 
    } 
       public class Inicio implements IniSiscom{ 
        public String getImagens(){ 
            return .... ;  O que ?
        } 
}

A questão é a seguinte: Eu quero que a interface passe para a classe Siscom o caminho que está no vetor Imagens da classe Config e depois este endereço passado pela interface para Siscom, seja passado para CadCli.

Valeu.

skill_ufmt

O problema é que interfaces NÃO passam nada pelo que eu saiba.
Você tem que criar uma classe que passará o que você quer baseado na interface que implementou.

No trecho abaixo:

public class Inicio implements IniSiscom{ 
        public String getImagens(){ 
            return .... ;  O que ?
        } 


/Faça:

public class Inicio implements IniSiscom{ 
        public String getImagens(){ 

//Aqui voce tem que implementar este método para que ele retorne esse
 //caminho que você quer, talvez percorrendo o array, e depois que tiver
 //tudo oque eu você quer, você retorna oque quer(um caminho ou dois, vc que sabe)

            return .... ;  
        }

Agora pra retornar o que ta no array é com você, do jeito que ta ae nem sei : ).
Tavlez importar a classe Config pra poder pegá-lo.
Tavlez váriáveis estáticas seriam melhor que um array.

Mas pelo que percebi você só precisa dos nomes do caminho certo?
porque não usa o Propertie para isso? você teria os caminhos lá,
e se num futuro algo mudasse(sempre muda)
não necessitaria recompilar nada,
apenas mudar o caminho no properite.
É a melhor e mias simples solução que vejo no momento.

E

OK. O problema é que estou começando agora e não sei como fazer isso se puder ajudar agradeço. Como você frizou eu preciso somente do caminho qye está no array.

Valeu.

skill_ufmt

excon:
OK. O problema é que estou começando agora e não sei como fazer isso se puder ajudar agradeço. Como você frizou eu preciso somente do caminho qye está no array.

Valeu.

Nes caso recomendo esta leitura para usar properties.

E buscas de mais exemplos no tio Google.

na minha opinião esses caminhos fixos devem ficar fora da aplicação, pois geralmente são os que mais mudam, e é inviável ficar recompilando classes por causa de um trequinho desses.

Criado 22 de março de 2005
Ultima resposta 22 de mar. de 2005
Respostas 5
Participantes 2