Передайте внутренний класс в качестве аргумента - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть два класса, для которых данные собираются во внутреннем классе с именем MyData (оба класса имеют некоторые общие и несколько различных полей в данных). Теперь я хочу передать эти данные, содержащие объект, в третий класс. Как мне ссылаться на внутренний класс из внешнего класса?

Обратите внимание, что я не могу извлечь MyData в новый класс, потому что он содержит несколько различных полей для классов A и B. Также обратите внимание, что по мере расширения этой работы могут быть другие классы D, E, F у него также будет внутренний класс MyData с полями, совершенно отличными от A и B, поэтому наследование здесь может не работать. Моя идея состоит в том, чтобы включить все поля данных (независимо от класса) в один объект и передать его C.

class A {
    class MyData {
        //some fields
    }
    MyData data = new MyData();
    new C(data);
    C.approve_a();
}

class B {
    class MyData {
        //some fields
    }
    MyData data = new MyData();
    new C(data);
    C.approve_b();
}

Я хочу иметь возможность сделать что-то вроде этого:

class C {
    MyData data;
    public C(MyData data) {
        this.data = data
    } 
    approve_a() {
        //operations on data.fields
    }
    approve_b() {
        //operations on data.fields
    }
}
...