Сомнения, связанные с реализацией интерфейса в Java - PullRequest
1 голос
/ 29 января 2010

Следующая программа при запуске будет выводить стек в виде продукта.
Я хочу знать, что происходит в строке, где создается экземпляр TestA.

interface TestA { String toString(); }

class Test 
{
  public static void main(String[] args) 
  {
     // whats going on in this line ???
     System.out.println(new TestA() {public String toString() { return "stackoverflow"; } });
  }
}

Ответы [ 3 ]

7 голосов
/ 29 января 2010

Вы создаете экземпляр анонимного класса , который реализует интерфейс TestA.

Эта техника очень полезна, например, для слушатели событий в программировании с графическим интерфейсом, поскольку это избавляет вас от создания группы именованных одноразовых классов.

3 голосов
/ 29 января 2010

Что вы делаете, это создаете класс anonymus, который реализует интерфейс. Чтобы было немного понятнее, вы также можете написать это:

interface TestA { String toString(); }

class Test 
{
  public static void main(String[] args) 
  {
    TestA test = new TestA()
    {
        public String toString()
        {
            return "stackoverflow";
        }
    };

    System.out.println(test);
  }
}
1 голос
/ 29 января 2010

Следующий класс создается на лету (без имени):

class Annonymous implements TestA 
{ 
    String toString() {
        return "stackoverflow";
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...