Java泛型-不能将K强制转换为Long

Java泛型-不能将K强制转换为Long,java,generics,intellij-idea,Java,Generics,Intellij Idea,我有下面的代码,它可以用maven编译得非常好,但是Intellij不断给我错误,说不可转换类型不能将“K”转换为java.lang.Long public class BPlusTree<K extends Comparable<K>, T> { public void debug(K time) { Long l = (Long) time; } } 公共类BPlusTree{ 公共无效调试(K次){ 长l=(长)时间; } } 当我

我有下面的代码,它可以用maven编译得非常好,但是Intellij不断给我错误,说
不可转换类型不能将“K”转换为java.lang.Long

public class BPlusTree<K extends Comparable<K>, T> {

    public void debug(K time) {
      Long l = (Long) time;
    }
}
公共类BPlusTree{
公共无效调试(K次){
长l=(长)时间;
}
}

当我从类定义中删除
部分时,intellij停止给出此错误。这里发生了什么?我知道这个casting可以抛出运行时
ClassCastException
,但为什么会出现编译错误?

Comparable
在处理泛型时有点奇怪。我相信正确的定义如下:

class BPlusTree<K extends Comparable<? super K>, T> {

    public void debug(K time) {
      Long l = (Long) time;
    }

}

class BPlustree编写
K扩展可比性
时,您的实际意思是什么?可能不是编译错误。IntelliJ可能只是让您知道您的代码已被破坏。我不知道删除约束时错误为何消失。@Mike'Pomax'Kamermans我想确保我的'K'是可比较的(它提供了compareTo方法)?那么当
time
String
时会发生什么呢?@Nullpointer K扩展可比较的事实并不能说明它是否一定可以转换为long。“破碎”这个词可能不合适。“只要求运行时异常”会更好。