почему объект а2 не видит функцию a2.receivedD(a.getD());

247
12 августа 2017, 02:10
package com.lala.blabla;
class A {
    interface B {
        void f();
    }
    public class BImp implements B {
        public void f() {
        }
    }
    private class BImp2 implements B {
        public void f() {
        }
    }
    public interface C {
        void f();
    }
    class CImp implements C {
        public void f() {
        }
    }
    private class CImp2 implements C {
        public void f() {
        }
    }
    interface D {
        void f();
    }
    private class DImp2 implements D {
        public void f() {
        }
        public D getD() {
            return new DImp2();
        }
        private D dref;
        public void receiveD(D d) {
            dref = d;
            dref.f();
        }
    }
    interface E {
        interface G {
            void f();
        }
        public interface H {
            void f();
        }
        void g();
    }
    public class nesting {
        public class Bimp implements A.B {
            public void f() {
            }
            ;
        }
        public class Cimp implements A.C {
            public void f() {
            }
            ;
        }
        class Eimp implements E {
            public void g() {
            }
            ;
        }
        class Gimp implements E.G {
            public void f() {
            }
            ;
        }
        class EGimp implements E.G {
            public void f() {
            }
            ;
        }
        class Eimp2 implements E {
            public void g() {
            }
            ;
            class EG implements E.G {
                public void f() {
                }
                ;
            }
        }
    }
    public static void main(String[] args) {
        A a = new A();
        A a2 = new A();
        a2.receivedD(a.getD());
    }
}
Answer 1

Для начала прогнали бы этот код в любой IDE, а потом уже писали бы сюда. И у вас опечатка в названии метода receivedD в DImp2. Теперь по теме: для доступа к методу нужно сначала создать экземпляр класса, в котором определен метод. Так как DImp2 является членом класса A, нужно явно прописать вместо вашего кода:

public static void main(String[] args) {
  A a = new A();
  A a2 = new A();
  a2.receivedD(a.getD());
}

Этот:

public static void main(String[] args) {
  A a = new A();
  A a2 = new A();
  a2.new DImp2().receivedD(a.new DImp2());
}
READ ALSO
Как правильно получить время?

Как правильно получить время?

Использую библиотеку Volley, получаю с сервера дату в виде строки

295
Проверка версии Zabbix Java Gateway

Проверка версии Zabbix Java Gateway

Добрый день! Как узнать версию zabbix-java-gateway? Пробовал через команду:

306
webElement.getText() как забрать нужный элемент

webElement.getText() как забрать нужный элемент

Пишу автотест, который проверяет некое поле на сайте, на соответствиеВсе работает нормально, но: обычно обращаюсь к какому-либо элементу...

247
Как достать обложку альбома файла мр3?

Как достать обложку альбома файла мр3?

Конкретной инфы нет, где и с какого байта искать обложкуМожет у кого есть соображения?

259