java - Java 8 error compiling code to add node in linklist but runs correctly in Java 15
问题描述
Here's the function to add node in singly link list. It is getting executed on Java 15, but for Java 8 it shows the compilation error.
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;
}
Here's the link for whole problem statement: https://www.hackerrank.com/challenges/insert-a-node-at-a-specific-position-in-a-linked-list/problem
This is the error:
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
What is the reason for this error?
解决方案
Java 8 中第一个编译错误的原因是在 Java 15 之前的内部类中不允许使用静态方法。作为支持record
类更改的一部分,该限制已被删除。(有关一些背景信息,请参阅为什么在 Java 16 的非静态内部类中允许使用静态方法?)。
第二个错误是第一个错误的结果。Java 8 编译器拒绝了方法声明......然后不会将其解析为符号。
Java 8 可移植性的最简单解决方案是static
从该方法中删除修饰符。(将Result
类声明为static
可能的替代方案......)
推荐阅读
- javascript - 无法通过 JQuery 选择 wordrpess 帖子发布按钮?
- jasper-reports - 如何在包含数值的字段表达式中添加前导零?
- python - 如何将字典列表拆分为保持相同索引的多个列?
- c# - 您的程序花费了比预期更多的时间。超过了时间限制。预期时间限制 < 3.496 秒
- opengl-es - Opengl ES 2.0 着色器 - 丢弃 alpha == 0 的像素而不丢弃,如果
- mysql - 使用来自另一个表的相应数据更新所有表记录
- reactjs - Append the HTML tag to the document. HierarchyRequestError: The operation would yield an incorrect node tree
- mysql - 重命名 SQL 连接查询的返回值
- azure-active-directory - Azure AD 中用户的 Angular 应用程序的身份验证流
- java - 如何使用 Velocity 模板语言检查数组中是否存在值