У меня есть конструктор, который получает HashSet и HashMap. Мне нужно запустить проверку проверки на один hashMAp и объединить его с hashSet, так как «super» должен получить только один hashSet. я не могу найти способ сделать это, как я получаю следующее сообщение об ошибке: cannot reference this before supertype constructor
Как запустить функцию перед вызовом super в java?
Пример:
public class A extends B {
public A(HashSet<Obj> h1, HashMap<UID,Objects> m1) {
super(new C (h1)); //h1 should contain changes related to m1..
}
Я хочу сделать что-то вроде этого:
public class A extends B {
public A(HashSet<Obj> h1, HashMap<UID,Objects> m1) {
runMyFunc(h1,m1);
super(new C (h1));
}
runMyFunc(HashSet<Obj> h1, HashMap<UID,Objects> m1){
//do checks
//more checks...
// if something then h1.setUid(m1.get(0))...
return h1;
}
Я думал, преобразуя конструктор к частному, а затем запустить его следующим образом:
public class A extends B {
private A(HashSet<Obj> h1) {
super(new C (h1));
}
public A(HashSet<Obj> h1, HashMap<UID,Objects> m1) {
runMyFunc(h1,m1);
this(h1);
}
b это тоже не сработало.
Не могли бы вы посоветоваться?
Не можете ли вы просто задать поле 'super' в конце вызовов конструктора' A'? –
Вызов 'super()' или 'this()' должен быть первой строкой в конструкторе. 'super()' вызывается автоматически (без аргументов), если вы не вставляете его самостоятельно. Вы можете обойти проблему, используя заводской метод. – DJX