当前位置: 首页 > 面试题库 >

Java泛型问题:类“不在类型变量的范围内”错误。

公西苗宣
2023-03-14
问题内容

我正在为一个涉及泛型的类项目。

public interface Keyable <T> {public String getKey();}

public interface DataElement extends Comparable<Keyable<DataElement>>, Keyable<DataElement>, Serializable {...}
public class Course implements DataElement {...}


public interface SearchTree<K extends Comparable<Keyable<K>> & Keyable<K>> extends Serializable {...}
public class MySearchTree implements SearchTree<Course> {
...
    private class Node {
        public Course data;
        public Node left;
        public Node right;
        ...
    }
}

当尝试在MySearchTree的声明中使用Course类时,我收到一个类型自变量错误,指出“课程不在类型变量K的范围内”。我花了很多时间试图弄清楚Course可能缺少哪些属性,以使其不符合要求,但却空洞了。

有任何想法吗?


问题答案:

MySearchTreeK基本类型为Course。因此K必须“扩展” Comparable<Keyable<Course>> & Keyable<Course>。但是,它没有扩展Comparable<Keyable<DataElement>> & Keyable<DataElement>

我猜 DataElement 应该以类似的方式对泛型 ComparableEnum

public interface Keyable <T> {public String getKey();}

public interface DataElement<THIS extends DataElement<THIS>> extends Comparable<Keyable<THIS>>, Keyable<THIS>, Serializable {...}
public class Course implements DataElement<Course> {...}


public interface SearchTree<K extends Comparable<Keyable<K>> & Keyable<K>> extends Serializable {...}
public class MySearchTree implements SearchTree<Course> {


 类似资料:
  • 我正在开发一个代理适配器,使用Java中的泛型将一个请求/响应转换为另一个请求/响应。 我有一个接口: 适配器的实现(仅以请求案例为例): 抽象类: 从Java中的泛型类型推断泛型类型(编译时错误) 我在那个问题上花了大约三天时间。有什么想法吗?谢了。

  • 我正在开发一个小的android演示应用程序,其中混合了一些java类和接口与kotlin。我想从一个名为MvpViewStateActivity的具有泛型类型参数的java类扩展: 其中只是一个空的java接口: MvpPresenter是这样一个java接口: 和SearchViewActivity(Java): 所以现在我创建了一个kotlin接口: 其中,Item是pojo数据类。 也是用

  • 这基本上是我第一次接触Java泛型类型,我不知道下面的代码有什么问题。 我有一个helper类,它具有一个静态函数inRange-usng-generic类型,该函数应该从输入列表中返回对象列表,这些对象在索引处的对象周围的特定范围内(我还没有测试它,如果它工作正常与否,这不是问题): 然后我想在一个类中使用它: 类型为

  • 问题内容: 除了Swift,我还有这个问题。如何Type在泛型中使用变量? 我尝试了这个: This didn’t work either: 有没有办法做到这一点?我感觉到Swift只是不支持 它,并且给了我一些模棱两可的错误消息。 编辑:这是一个更复杂的示例,其中无法 使用通用函数标头来解决问题。当然,这没有任何意义, 但是我在代码中的某处合理地使用了这种功能 ,宁愿发布一个干净的示例而不是我的

  • 问题内容: 是否有将通用类型参数约束为 任何 类型范围的语法或解决方法? 我知道您可以将一个类型限制为 所有 类型的范围(即逻辑): 是否有逻辑版本,例如: 如果没有支持该语法的语法(我认为不存在),是否有一种好的方法或方法? 在某些情况下,一个示例用例可能是: 人们似乎迷上了上面我的方法示例的确切语义。让我们尝试一下: 编辑: 我不会在编译时知道(可能来自外部代码),所以我想避免每种类型都有具体

  • 我有一个考试示例,它询问我是否可以访问包含值1的x变量?解决方案是我可以,但我感兴趣的是具体怎么做?