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
相关产品推荐
相关产品推荐

