gpt4 book ai didi

java - 如何在java中调用super之前运行一个函数?

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:20 26 4
gpt4 key购买 nike

我有一个构造函数,它获取一个 HashSet 和一个 HashMap。我需要对一个 hashMAp 运行验证检查并将其与 hashSet 组合,因为“super”必须只接收一个 hashSet。我找不到解决方法,因为出现以下错误:cannot reference this before supertype constructor

例子:

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;
}

我想将构造函数转换为私有(private)的,然后像那样运行它:

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);
}

但它也没有用。

能请教一下吗?

最佳答案

只需让您的 runMyFunc static 并将其作为函数调用,您在 super 调用中使用返回值。这是允许的:

public class A extends B {
public A(HashSet<Obj> h1, HashMap<UID,Objects> m1) {
// Invoke as function rather than by itself on a separate line
super(new C (runMyFunc(h1,m1)) );
}

// Make method static
public static HashSet<Obj> runMyFunc(HashSet<Obj> h1, HashMap<UID,Objects> m1) {
//do checks
//more checks...
// if something then h1.setUid(m1.get(0))...
return h1;
}

关于java - 如何在java中调用super之前运行一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41921304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com