scala T 不是 class
scala T is not a class
我有这样的方法:
def loadConfiguration[T <: Product](implicit A: Configs[T]): T = {
和一个class
trait SparkBaseRunner[T <: Product] extends App {
从 SparkBaseRunner
class 中调用第一个方法时
ConfigurationUtils.loadConfiguration[T]
编译错误为:
T is not a class
我该怎么做才能解决这个与泛型相关的问题?
您还需要 implicit A: Configs[T]
可用 "when calling the first method from within the SparkBaseRunner class",但您没有。错误来自这个库试图找到一个的方式。
简单的方法是让它成为构造函数的参数,这需要从特征变为抽象class:
abstract class SparkBaseRunner[T <: Product](implicit A: Configs[T]) extends App {
// in extending class (Bar is a case class or
// some other type for which an implicit Configs[Bar] exists)
class Foo extends SparkBaseRunner[Bar] { ... }
如果SparkBaseRunner
需要作为trait,你可以将隐式参数添加到所有需要它的方法中,或者将其抽象为val
并在sub[=21=中手动提供]es
我有这样的方法:
def loadConfiguration[T <: Product](implicit A: Configs[T]): T = {
和一个class
trait SparkBaseRunner[T <: Product] extends App {
从 SparkBaseRunner
class 中调用第一个方法时
ConfigurationUtils.loadConfiguration[T]
编译错误为:
T is not a class
我该怎么做才能解决这个与泛型相关的问题?
您还需要 implicit A: Configs[T]
可用 "when calling the first method from within the SparkBaseRunner class",但您没有。错误来自这个库试图找到一个的方式。
简单的方法是让它成为构造函数的参数,这需要从特征变为抽象class:
abstract class SparkBaseRunner[T <: Product](implicit A: Configs[T]) extends App {
// in extending class (Bar is a case class or
// some other type for which an implicit Configs[Bar] exists)
class Foo extends SparkBaseRunner[Bar] { ... }
如果SparkBaseRunner
需要作为trait,你可以将隐式参数添加到所有需要它的方法中,或者将其抽象为val
并在sub[=21=中手动提供]es