首页 > 编程语言 >Java定义类的参数时的一个注意事项

Java定义类的参数时的一个注意事项

时间:2023-12-15 15:15:20浏览次数:40  
标签:Node node Java 定义 get private value key 注意事项

我在做CS 61B 21sp的lab7时,为了实现BST

public class BSTMap<K extends Comparable<K> , V> implements Map61B<K, V>{

}

  

定义了一个类

private class Node<K,V>{
        private K key;
        private V value;
        private Node<K,V> left, right;
        public Node(K key, V value){
            this.key = key;
            this.value = value;
        }
}

 调用方法get时报错: java: 不兼容的类型: java.lang.Object无法转换为K

private V get(Node node, K key){
        if (node == null) {
            return null;
        }
        if (key == null){
            throw new UnsupportedOperationException("Key cannot be null");
        }
        int cmp = key.compareTo(node.key);
        if (cmp == 0){
            return node.value;
        } else if (cmp < 0){
            return get(node.left, key);
        } else {
            return get(node.right, key);
        }

  }

错误原因: 因为在get方法的私有辅助方法中,没有为Node类指定类型参数。

修改方法一:定义类时改为 private class Node{}

修改方法二: 将所有Node类的实例与正确的类型参数匹配, 亦即将Node node 改为 Node<K, V> node

 

标签:Node,node,Java,定义,get,private,value,key,注意事项
From: https://www.cnblogs.com/Sysyphus42/p/17903395.html

相关文章

  • JavaScript-IndexedDB API
    概述随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据。现有的浏览器数据储存方案,都不适合储存大量数据:Cookie的大小不超过4KB,且每次请求都会发送回服务器;LocalStorage在2.5MB到10MB之间(各家浏览器不......
  • Java核心知识体系8:Java如何保证线程安全性
    Java核心知识体系1:泛型机制详解Java核心知识体系2:注解机制详解Java核心知识体系3:异常机制详解Java核心知识体系4:AOP原理和切面应用Java核心知识体系5:反射机制详解Java核心知识体系6:集合框架详解Java核心知识体系7:线程不安全分析1Java内存模型(JMM)如何解决并发问题维度1:使......
  • 无涯教程-Java - isWhitespace()函数
    该方法确定指定的char值是否为空格,包括空格,制表符或换行符。isWhitespace()-语法booleanisWhitespace(charch)这是参数的详细信息-ch  - 原始字符类型。isWhitespace()-返回值如果传递的字符确实是空格,则此方法返回true。isWhitespace()- 示例publiccla......
  • 无涯教程-Java - isDigit()函数
    该方法确定指定的char值是否为数字。isDigit()-语法booleanisDigit(charch)这是参数的详细信息-ch  - 原始字符类型。isDigit()-返回值如果传递的字符确实是数字,则此方法返回true。isDigit()-示例publicclassTest{publicstaticvoidmain(String......
  • java动态调用webservice
    packagecom.smp.common;importserverInfo.ServerInfo;importjavax.xml.soap.*;importjavax.xml.transform.Source;importjavax.xml.transform.Transformer;importjavax.xml.transform.TransformerFactory;importjavax.xml.transform.stream.StreamResult;impo......
  • javascript怎么实现文件上传和下载功能
    在现代Web开发中,文件上传和下载是经常遇到的需求。JavaScript作为前端开发的语言之一,提供了许多强大的工具库和API来管理文件上传和下载的过程。本文将探讨如何使用JavaScript实现文件上传和下载的功能,首先介绍基于HTML5的FileAPI,然后使用jQuery和XMLHttpRequest......
  • Java-Jvm中GC类型及执行时机
    Java-Jvm中GC类型及执行时机堆的结构年轻代(YoungGeneration):Eden区:在年轻代中,对象首先被分配到Eden区。大多数对象很快就会被回收,所以它们被分配到Eden区以提高分配速度。Survivor区(S0和S1):Eden区中存活的对象会被移动到Survivor区。每次发生MinorGC时,存活的对象会被移......
  • Java-创建线程池的参数及工作原理
    Java-创建线程池的参数及工作原理常见的参数corePoolSize(核心线程数):线程池中保持的最小线程数,即使它们是空闲的。maximumPoolSize(最大线程数):线程池中允许的最大线程数。keepAliveTime(线程空闲时间):当线程池中的线程数超过核心线程数时,多余的空闲线程在被终止之前等待新......
  • Java-创建线程池的参数及工作原理
    Java-创建线程池的参数及工作原理常见的参数corePoolSize(核心线程数):线程池中保持的最小线程数,即使它们是空闲的。maximumPoolSize(最大线程数):线程池中允许的最大线程数。keepAliveTime(线程空闲时间):当线程池中的线程数超过核心线程数时,多余的空闲线程在被终止之前等待新......
  • Java-创建线程池的参数及工作原理
    Java-创建线程池的参数及工作原理常见的参数corePoolSize(核心线程数):线程池中保持的最小线程数,即使它们是空闲的。maximumPoolSize(最大线程数):线程池中允许的最大线程数。keepAliveTime(线程空闲时间):当线程池中的线程数超过核心线程数时,多余的空闲线程在被终止之前等待新......