gpt4 book ai didi

java - 类中的构造函数不能应用于给定类型 - 抽象类

转载 作者:行者123 更新时间:2023-12-02 03:33:20 25 4
gpt4 key购买 nike

我知道名义上的问题已经在这里和那里得到了解答,但每个答案仍然无法解决我的问题。问题是这样的:

我有一个抽象类,它是 Node,包含这样的构造函数:

public Node(List<Record> dataSet, int labelIndex) {
this.allSamples = new ArrayList<Integer>();
this.dataSet = dataSet;
this.classificationLabelIndex = labelIndex;
this.entropy = 0;
}

然后,我将抽象类扩展为 TreeNode,包含这样的构造函数(以使用 super):

public TreeNode(List<Record> dataSet, int labelIndex, List<Attribute> attributes, int level, double threshhold) {
super(dataSet, labelIndex);
this.attributes = attributes;
splittedAttrs = new HashSet<Integer>();
this.level = level;
this.displayPrefix = "";
this.children = null;
this.threshhold = threshhold;
}

因此,TreeNode 类扩展了抽象 Node 类,并使用 super 方法从 Node 类调用数据集和 labelindex,但随后我收到警告“Node 类中的构造函数 Node 无法应用于给定类型,不需要任何参数。”也许是因为我在TreeNode中添加了一些参数,但我仍然认为这不太可能。任何帮助表示赞赏。

最佳答案

在没有看到更多细节的情况下,很难知道问题出在哪里。不,你不能直接实例化一个抽象类,但是你可以从子类的抽象类的构造函数上调用 super ,所以你所做的似乎没问题。一个想法是确保您不会与另一个名为 Node 或 TreeNode 的类发生任何冲突的类路径问题。实际上,如果您导入了这些自定义类,那么您正在创建的自定义类可能已经存在于您的类路径中,例如: https://docs.oracle.com/javase/7/docs/api/javax/swing/tree/TreeNode.html https://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Node.html

尝试将它们重命名为更适合您的名称,例如 MyTreeNode 和 MyNode 或其他名称。

不管怎样,我尝试用您发送的代码尽可能地复制,并且没有看到任何问题(即与我的类路径中的其他导入没有冲突)。检查一下,看看它是否与您所拥有的相符。如果没有,请复制/粘贴错误的堆栈跟踪以及所有代码。谢谢

import java.util.ArrayList;
import java.util.List;

import java.util.ArrayList;
import java.util.List;

public abstract class Node {

private List<Integer> allSamples;
private List<Record> dataSet;
private int classificationLabelIndex;
private int entropy;

public Node(List<Record> dataSet, int labelIndex) {
this.allSamples = new ArrayList<Integer>();
this.dataSet = dataSet;
this.classificationLabelIndex = labelIndex;
this.entropy = 0;
}

}

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class TreeNode extends Node {

private List<Attribute> attributes;
private Set<Integer> splittedAttrs;
private int level;
private String displayPrefix;
private Object children;
private double threshhold;

public TreeNode(List<Record> dataSet, int labelIndex,
List<Attribute> attributes, int level, double threshhold) {
super(dataSet, labelIndex);
this.attributes = attributes;
splittedAttrs = new HashSet<Integer>();
this.level = level;
this.displayPrefix = "";
this.children = null;
this.threshhold = threshhold;
}

public static void main(String[] args) {
Node node = new TreeNode(new ArrayList<Record>(), 1,
new ArrayList<Attribute>(), 1, 1.1);

}

}

class Record {}
class Attribute {}

关于java - 类中的构造函数不能应用于给定类型 - 抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37766245/

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