You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中创建Cellule类型链表数组时的构造器错误求助

解决构造器错误与泛型数组实例化问题

你目前遇到两个核心问题,直接导致了编译错误:


1. 构造器定义错误

你写的public void DictionnaireHachage()是普通方法,不是构造器。Java里构造器的规则是:

  • 必须和类名完全同名
  • 不能有任何返回值修饰符(包括void)

去掉void后,这个方法才会被识别为类的构造器,创建DictionnaireHachage实例时会自动执行初始化逻辑。

2. 泛型数组实例化限制

Java不允许直接创建Cellule<String>[]这种泛型数组(因为泛型类型擦除机制),需要通过原始类型数组强制转换的方式实现。


修正后的完整代码

Cellule.java(顺便修正next属性的泛型,避免警告)

package inf353;

public class Cellule<T> {
    public T val;
    public int index;
    // 修正为泛型类型的next,消除未经检查的转换警告
    public Cellule<T> next;

    public Cellule() {
        super();
    }
}

DictionnaireHachage.java

package inf353;

public class DictionnaireHachage implements Dictionnaire {
    Cellule<String>[] dictH;
    int index = 0;

    // 正确的构造器:无返回值修饰符,名称与类名一致
    @SuppressWarnings("unchecked") // 消除泛型转换的编译警告
    public DictionnaireHachage() {
        // 通过原始类型数组强制转换实现泛型数组实例化
        dictH = (Cellule<String>[]) new Cellule[100];
        index = 0;
    }
}

内容的提问来源于stack exchange,提问作者Oukkal Yacine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:10:52