Como é que eu faria o acesso à variável ‘var = 19’ ?
Testando, percebi que não consigo acessar ‘var’ estaticamente (toda variável dentro de uma interface é public static final ).
Outra coisa. No padrão de projeto “State”, uma classe possui uma instância de uma interface, tal como fiz acima.
Para que serve uma variável do tipo da interface?
Ai nesse caso você criou uma classe anônima que implementou a interface Funcionário.
E em relação a variável dentro de Interface, ela vira uma constante das classes que a implementaram. Então se eu colocasse uma variável x na interface Funcionários, ela seria uma constante de Gerente,Diretor e na própria interface. Mas na prática vi pouquíssimas vezes isso.
ECO2004
javablue:
Não existe instância de interface. Existe uma instância da classe que a implementou.
Ai nesse caso você criou uma classe anônima que implementou a interface Funcionário.
E em relação a variável dentro de Interface, ela vira uma constante das classes que a implementaram. Então se eu colocasse uma variável x na interface Funcionários, ela seria uma constante de Gerente,Diretor e na própria interface. Mas na prática vi pouquíssimas vezes isso.
Eu me expressei errado...quando eu disse que no padrão de projeto uma classe tinha uma instância da interface, quis dizer que essa classe possui uma variável do tipo da interface, como expus no meu exemplo...
ECO2004
1 - Agora, para que que serve uma variável do tipo interface?
Interfacei;
No meu exemplo, a classe não implementa a interface.
Quero acessar var, diferentemente do código abaixo:
Com relação a variável da Interface, ela só poderá ser acessada se um classe implementar a interface, correto?
Não entendi pq não e possível acessar direto a varíavel static pelo nome da Interface, é uma regra específica para Interfaces?
ECO2004
gRoOve:
Com relação a variável da Interface, ela só poderá ser acessada se um classe implementar a interface, correto?
Não entendi pq não e possível acessar direto a varíavel static pelo nome da Interface, é uma regra específica para Interfaces?
Acredito que sim, na sua primeira pergunta.
Na segunda, não dá acesso à ‘var’ usando acesso estático direto (Interface.var).
nel
ECO2004:
gRoOve:
Com relação a variável da Interface, ela só poderá ser acessada se um classe implementar a interface, correto?
Não entendi pq não e possível acessar direto a varíavel static pelo nome da Interface, é uma regra específica para Interfaces?
Acredito que sim, na sua primeira pergunta.
Na segunda, não dá acesso à ‘var’ usando acesso estático direto (Interface.var).
Quem lhe disse que não? Você e o gRoOve estão enganados.
Toda e qualquer variavél declarada dentro de uma interface é public, static e final, ou seja, imutavél.
Isso:
public interface IExemplo {
public static final String EXEMPLO = "Teste";
}
É igual a isto:
public interface IExemplo {
String EXEMPLO = "Teste";
}
Assim como também todo método em uma interface é publico e abstrato.
Portanto, para esse exemplo, é perfeitamente possível acessar a variavel EXEMPLO fazendo simplesmente IExemplo.EXEMPLO.
Entenderam?
Abraços.
ECO2004
nel:
ECO2004:
gRoOve:
Com relação a variável da Interface, ela só poderá ser acessada se um classe implementar a interface, correto?
Não entendi pq não e possível acessar direto a varíavel static pelo nome da Interface, é uma regra específica para Interfaces?
Acredito que sim, na sua primeira pergunta.
Na segunda, não dá acesso à ‘var’ usando acesso estático direto (Interface.var).
Quem lhe disse que não? Você e o gRoOve estão enganados.
Toda e qualquer variavél declarada dentro de uma interface é public, static e final, ou seja, imutavél.
Isso:
public interface IExemplo {
public static final String EXEMPLO = "Teste";
}
É igual a isto:
public interface IExemplo {
String EXEMPLO = "Teste";
}
Assim como também todo método em uma interface é publico e abstrato.
Portanto, para esse exemplo, é perfeitamente possível acessar a variavel EXEMPLO fazendo simplesmente IExemplo.EXEMPLO.
Entenderam?
Abraços.
Então tá, amigo. Conversa com o Eclipse…
Já compilou esse código?
A
AbelBueno
ECO2004:
Então tá, amigo. Conversa com o Eclipse…
Já compilou esse código?
Eu compilei e funciona!
Em nenhum momento você postou um código que acesse a variável da interface conforme sugerido.
Que erro o Eclipse te dá? E com qual código exatamente?
MinhaInterface e MinhaClasse não compartilham informações por estarem no mesmo arquivo.
nel
ECO2004:
nel:
ECO2004:
gRoOve:
Com relação a variável da Interface, ela só poderá ser acessada se um classe implementar a interface, correto?
Não entendi pq não e possível acessar direto a varíavel static pelo nome da Interface, é uma regra específica para Interfaces?
Acredito que sim, na sua primeira pergunta.
Na segunda, não dá acesso à ‘var’ usando acesso estático direto (Interface.var).
Quem lhe disse que não? Você e o gRoOve estão enganados.
Toda e qualquer variavél declarada dentro de uma interface é public, static e final, ou seja, imutavél.
Isso:
public interface IExemplo {
public static final String EXEMPLO = "Teste";
}
É igual a isto:
public interface IExemplo {
String EXEMPLO = "Teste";
}
Assim como também todo método em uma interface é publico e abstrato.
Portanto, para esse exemplo, é perfeitamente possível acessar a variavel EXEMPLO fazendo simplesmente IExemplo.EXEMPLO.
Entenderam?
Abraços.
Então tá, amigo. Conversa com o Eclipse…
Já compilou esse código?
Está precisando pegar um livro de Java e dar uma boa lida meu camarada.
Eu lhe dei um exemplo simples e que com certeza funciona.
Senão funcionar, é porque não tem Java instalado em sua máquina
Bons estudos.
Abraços.
ECO2004
AbelBueno:
ECO2004:
Então tá, amigo. Conversa com o Eclipse…
Já compilou esse código?
Eu compilei e funciona!
Em nenhum momento você postou um código que acesse a variável da interface conforme sugerido.
Que erro o Eclipse te dá? E com qual código exatamente?
MinhaInterface e MinhaClasse não compartilham informações por estarem no mesmo arquivo.
Você leu isso amigo? Se leu, vai entender porque o erro ocorre
Abraços.
J
javablue
Tenta assim:
intx=MinhaInterface.var;
Ai compila
ECO2004
Agradeço a todos pela ajuda!
O que aconteceu foi que, quando eu iniciava uma linha com
MinhaInterface. (esperando aparecer var como opção de acesso), o compilador via o resultado disso como um retorno de valor, apenas. Como “MinhaInterface.” não estava dentro de um System.out.print() ou havia uma variável recebendo o retorno, gerava um “No default proposal”.
Daí surgiram as dúvidas sobre variáveis dentro de uma interface!
Vlw mesmo pela luz!
gRoOve
nel:
ECO2004:
gRoOve:
Com relação a variável da Interface, ela só poderá ser acessada se um classe implementar a interface, correto?
Não entendi pq não e possível acessar direto a varíavel static pelo nome da Interface, é uma regra específica para Interfaces?
Acredito que sim, na sua primeira pergunta.
Na segunda, não dá acesso à ‘var’ usando acesso estático direto (Interface.var).
Quem lhe disse que não? Você e o gRoOve estão enganados.
Toda e qualquer variavél declarada dentro de uma interface é public, static e final, ou seja, imutavél.
Isso:
public interface IExemplo {
public static final String EXEMPLO = "Teste";
}
É igual a isto:
public interface IExemplo {
String EXEMPLO = "Teste";
}
Assim como também todo método em uma interface é publico e abstrato.
Portanto, para esse exemplo, é perfeitamente possível acessar a variavel EXEMPLO fazendo simplesmente IExemplo.EXEMPLO.
Entenderam?
Abraços.
Nel, estou enganado com relação a qual afirmação? Falei que não entendia pq a variável NÃO podia ser acessada…
Compilei o código e rodou normalmente aqui.
ECO2004
gRoOve:
nel:
ECO2004:
gRoOve:
Com relação a variável da Interface, ela só poderá ser acessada se um classe implementar a interface, correto?
Não entendi pq não e possível acessar direto a varíavel static pelo nome da Interface, é uma regra específica para Interfaces?
Acredito que sim, na sua primeira pergunta.
Na segunda, não dá acesso à ‘var’ usando acesso estático direto (Interface.var).
Quem lhe disse que não? Você e o gRoOve estão enganados.
Toda e qualquer variavél declarada dentro de uma interface é public, static e final, ou seja, imutavél.
Isso:
public interface IExemplo {
public static final String EXEMPLO = "Teste";
}
É igual a isto:
public interface IExemplo {
String EXEMPLO = "Teste";
}
Assim como também todo método em uma interface é publico e abstrato.
Portanto, para esse exemplo, é perfeitamente possível acessar a variavel EXEMPLO fazendo simplesmente IExemplo.EXEMPLO.
Entenderam?
Abraços.
Nel, estou enganado com relação a qual afirmação? Falei que não entendia pq a variável NÃO podia ser acessada…
Compilei o código e rodou normalmente aqui.
IExemplo.EXEMPLO somente irá funcionar se sor parâmetro de algum método ou se tiver alguma var recebendo o seu valor. Caso contrário, não.
nel
Cara,
cuide com o que afirma (usando somente), principalmente se não tem certeza sobre o que fala.
Uma variavél de uma interface quando é acessada, precisa existir uma operação de atribuição e/ou manipulação sobre ela.
Caso contrário, terás em tempo de compilação algo como “AssignmentOperator Expression”.
Você pode utiliza-la em um IF, Switch, passagem de parametro, enfim, manipular.
O que não pode é atribuir um novo valor e/ou acessar a variavél sem executar nenhum tipo de manipulação e/ou atribuição sobre ela.
Abraços.
ECO2004
nel:
Cara,
cuide com o que afirma (usando somente), principalmente se não tem certeza sobre o que fala.
Uma variavél de uma interface quando é acessada, precisa existir uma operação de atribuição e/ou manipulação sobre ela.
Caso contrário, terás em tempo de compilação algo como “AssignmentOperator Expression”.
Você pode utiliza-la em um IF, Switch, passagem de parametro, enfim, manipular.
O que não pode é atribuir um novo valor e/ou acessar a variavél sem executar nenhum tipo de manipulação e/ou atribuição sobre ela.
Abraços.
Ok!
WellingtonRamos
javablue:
Tenta assim:
Ai compila
Com certeza :thumbup:
Apenas uma observação:
Essa variável é acessada apenas como leitura. Não será possível alterar seu conteúdo (como já foi citado, é imutável). Ou seja: