当前位置: 首页 > 知识库问答 >
问题:

Java 8编译代码以在链接列表中添加节点时出错,但在Java 15中正确运行[已关闭]

金谭三
2023-03-14

下面是在单链接列表中添加节点的函数。它将在Java15上执行,但对于Java8,它显示了编译错误。

public static SinglyLinkedListNode insertNodeAtPosition(SinglyLinkedListNode llist, int data, int position) {
// Write your code here
        SinglyLinkedListNode new_node = new SinglyLinkedListNode(data);
    SinglyLinkedListNode curr_node = llist;
    
    int i=0;
    while(i<position-1)
    {
        curr_node = curr_node.next;
        i++;
    }
    new_node.next = curr_node.next;
    curr_node.next = new_node;
    
    return llist;
}

下面是整个问题陈述的链接:https://www.hackerrank.com/challenges/insert-a-node-at-a-specific-position-in-a-linked-list/problem

这就是错误:

Solution.java:78: error: Illegal static declaration in inner class Solution.Result
    public static SinglyLinkedListNode insertNodeAtPosition(SinglyLinkedListNode llist, int data, int position) {
                                       ^
  modifier 'static' is only allowed in constant variable declarations
Solution.java:121: error: cannot find symbol
        SinglyLinkedListNode llist_head = insertNodeAtPosition(llist.head, data, position);
                                          ^
  symbol:   method insertNodeAtPosition(SinglyLinkedListNode,int,int)
  location: class Solution
2 errors
Exit Status

1

这个错误的原因是什么?

共有1个答案

楚瑞
2023-03-14

Java8第一次编译错误的原因是,在Java15之前,内部类不允许使用静态方法。作为支持记录类的更改的一部分,该限制已被删除。(请参见为什么静态方法允许在Java16的非静态内部类中?对于一些背景)。

第二个错误是第一个错误的结果。Java 8编译器已拒绝方法声明。。。然后就不会把它作为一个符号来解析了。

Java8可移植性的最简单解决方案是从该方法中删除静态修饰符。(声明Result类为静态可能是另一种选择...)

 类似资料:
  • 我成功地编写了一个带有点精灵的标准基本变换反馈粒子系统。没有闪烁,粒子从一个缓冲区更新到下一个缓冲区,然后进行渲染,然后输出缓冲区在下一次迭代时成为输入缓冲区。所有GPU端,标准转换反馈。精彩的一个大问题是:只有在我不使用gl_PointCoord的情况下,它才有效。在我的点精灵中使用平面颜色效果很好。但我需要gl_PointCoord做任何有意义的事。我所有的着色器,不管是否使用gl_Point

  • Java8引入了重要的新语言特性,如lambda表达式。 语言中的这些变化是否伴随着编译字节码中的重大变化,从而阻止它在不使用某些反向翻译器的情况下在Java7虚拟机上运行?

  • 我正在使用java 11处理一些依赖项并编译到旧版本。我将一个依赖项迁移到Java11并正常工作,但我们仍然必须在Java8上运行Tomcat 7或8。是否可以使用标志来编译使用,或并在8上运行的代码? 发布标志表明应该可以: --发布版本 针对特定 VM 版本的公共、受支持和记录的 API 进行编译。支持的版本目标为 6、7、8 和 9。 这个项目是一个依赖项,独立运行在SprinBoot2.1

  • 我在laravel 5.3中工作,我想在现有表格中添加列(即课程章节)。所以我已经通过命令创建了迁移文件 迁移文件已经创建,我已经添加了一些代码来在该表中添加列,如下所示 我执行命令后 PHP工匠迁移 表没有被创建,而不是我得到了错误 任何答案? 我现有的表迁移文件是

  • 当我尝试编译时,这段代码给出了错误?