New em Interface... pode?!?

6 respostas
G

PessoALL,

Estou estudando para certific e encontrei o seguinte trecho de programa que não estou entendendo:

Runnable r = new Runnable() {
    public void run() {
        Work.doIt();
    }
};
Thread t = new Thread(r);
t.start();

Pode dar new em uma interface como a Runnable???
Tks

6 Respostas

brunogamacatao

Você tá implementando a interface Runnable através de uma anonymous inner class. Esse recurso é muito utilizado quando você quer implementar apenas um método de uma interface para realizar uma tarefa rápida e não quer criar uma classe nova só para isso. As anonymous inner classes são bastante utilizadas para implementar ações de componentes visuais.

P

Falei besteira, desculpem.

Sami_Koivu

Anonymous ? De anonimo isso ai não tem nada…
[/code]

O Bruno tem razão. É um anonymous inner class, mesmo. O “anonimo” aqui se refere ao fato que você está criando uma nova classe que implementa a interface, mas você não está especificando um nome para essa classe.

[]s,
Sami

L

Qual a diferença desse seu código e do código do colega acima ? :roll:

davidbuzatto

A diferença é q na segunda o objeto a classe anônima não está sendo atribuído a nenhuma referência. O código vai dar erro pois em “Thread t = new Thread®;” o compilador não vai encontrar o “r”

LPJava

grandegod:
PessoALL,

Estou estudando para certific e encontrei o seguinte trecho de programa que não estou entendendo:

Runnable r = new Runnable() {
    public void run() {
        Work.doIt();
    }
};
Thread t = new Thread(r);
t.start();

Pode dar new em uma interface como a Runnable???
Tks


bom observe a finalização desse codigo }; siginifica que vc criou uma class anonima que implementou o metodo da interface é a unica vez que vc vai uma interface com new e isso nao é valido apenas para Runnable, qualquer outra interface que criar veja:

interface Jogo{
void bola();
}
class Futebol{
Jogo j = new Jogo(){
public void bola(){
System.out.println("bola azul");
}
};

flw!!!

Criado 21 de abril de 2007
Ultima resposta 23 de abr. de 2007
Respostas 6
Participantes 7