gpt4 book ai didi

java - 创建一个泛型类(具有通配符类型)和多个构造函数

转载 作者:行者123 更新时间:2023-12-02 16:16:14 25 4
gpt4 key购买 nike

我对 Scala (2.8) 还很陌生,以下是我在 Scala 中难以表达的内容:

我需要定义一个类(由于与 Java 库的互操作性)实现 Comparable;它的泛型类型必须与其自身或父类(super class)可比较

我还需要一个无参数构造函数以及另一个使用通用参数的构造函数

我写了一个简单的等价于我试图用 Java 实现的内容:

public class MyComparable<T extends Comparable<? super T>>{
public MyComparable() {}

public MyComparable(T a){
System.out.println(a);
}
}

我可以毫无问题地在 scala REPL 中导入此类并实例化它。

这是我在 Scala 中编写的内容,试图完成同样的事情:

import java.lang.Comparable

class MyComparable[T <: Comparable[_>:Tb],Tb]()(implicit ev: T=:=Tb) {
def this(a: T) = {
this()
println(a)
}
}

我尝试了两种方法:使用无参数构造函数作为默认构造函数,或使用带有 T 参数的构造函数:在这两种情况下,我都会得到错误:无法找到参数 ev 的隐式值: =:=[ T,Tb] 第 5 行

Afaik,=:= 默认从 scala.Predef 导入(事实上,这段代码只使用一个构造函数就可以正常工作)

最佳答案

不完全确定您要做什么,但您可以这样做:

import java.lang.Comparable

class MyComparable[T <: Comparable[_>:Tb],Tb]()(implicit ev: T=:=Tb) {
def this(a: T)(implicit ev: T=:=Tb) = {
this()
println(a)
}
}

关于java - 创建一个泛型类(具有通配符类型)和多个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5337336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com