Java泛型getElement调用报错:Integer类型无getElement()如何解决
问题根因
报错的核心原因是当前getElement(int col, int row)方法返回的是Integer类型的元素值,而非存储该值的Node实例,因此后续调用getElement()时,系统会查找Integer类的对应方法,自然提示不存在。
解决方案
只需调整getElement(int col, int row)的返回值类型与返回逻辑,让它直接返回对应位置存储的Node实例即可,不需要提前取出Node里的元素值:
修改前的错误逻辑示例(供参考)
// 原方法错误地提前取出了Node内的元素值返回 public T getElement(int col, int row) { // 假设内部存储数组为 Node<T>[][] grid return grid[col][row].getElement(); }
修改后的正确逻辑
// 调整返回值类型为Node<T>,直接返回对应位置的Node实例 public Node<T> getElement(int col, int row) { // 假设内部存储数组为 Node<T>[][] grid return grid[col][row]; }
修改后intGrid.getElement(0, 0)会得到Node<Integer>类型的实例,再调用该实例的getElement()方法就会返回Integer值,可以自动拆箱赋值给int类型的x,完全符合你不能修改调用语句、不能修改Node类方法的约束。
内容的提问来源于stack exchange,提问作者Cameron Brooks
相关产品推荐
相关产品推荐

