簡體   English   中英

java 鏈表副本:為什么我的編譯器顯示克隆方法錯誤?

[英]java linkedlist copy : why my compiler show clone method error?

這是我的代碼,在這一行

 tem_left = (LinkedList) leftover.clone();

我的 Intellij 在.clone() 方法下顯示了紅色波浪線(順便說一句,如何描述這條紅色波浪線?提示錯誤?)它說 clone() 在 Java.lang.Object 中具有受保護的訪問權限。 這是我在網上找到的將鏈接列表復制到另一個鏈接列表的內容。 我做錯了什么,我應該如何糾正?

package lc_771_Jewels;

import java.util.*;

import java.util.LinkedList;
import java.util.Queue;

public class Jewels_discuss {
    public int count_jewels(String jewels, String stones){
        char[] jewels_kind = jewels.toCharArray();
        char[] stone_list = stones.toCharArray();
        int count = 0;
        Queue<Character> tem_left = new LinkedList<>();
        for (int i = 0; i < stone_list.length; i++) {
           tem_left.offer(stone_list[i]);
        }
        for (int i = 0; i < jewels_kind.length; i++) {
            Queue<Character> leftover = new LinkedList<>();
            char tem_jewel = jewels_kind[i];
            for (int j = 0; j < tem_left.size(); j++) {
                if (tem_jewel!= stone_list[i]  ){
                    leftover.offer(stone_list[i]) ;
                }
                else {
                    count++;
                }
            }
            tem_left = (LinkedList) leftover.clone();
        }
        return count;
    }
}

正如IDEA所暗示的,它顯示了Queue接口的克隆方法是Object。

protected native Object clone() throws CloneNotSupportedException;

我們不能從外部調用受保護的方法。
但是,我們可以選擇一個實現,將 clone 方法從protected 改成public
我們可以直接按照IDEA推薦。
只需將 Queue 更改為 LinkedList。

// Queue<Character> leftover = new LinkedList<>();
LinkedList<Character> leftover = new LinkedList<>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM