gpt4 book ai didi

scala - 如何从 Scala 中的泛型函数返回 null?

转载 作者:行者123 更新时间:2023-12-04 00:19:46 26 4
gpt4 key购买 nike

我正在写我自己的简单 javax.sql.DataSource实现,我需要工作的唯一方法是getConnection: Connection ,但接口(interface)继承了许多其他方法(我不需要)来自javax.sql.CommonDataSourcejava.sql.Wrapper .因此,我想以一种它们实际上不会起作用但在调用时会表现得足够好的方式来“实现”那些不需要的方法。例如我实现 boolean isWrapperFor(Class<?> iface)作为

def isWrapperFor(iface: Class[_]): Boolean = false

我想实现 <T> T unwrap(Class<T> iface)作为
def unwrap[T](iface: Class[T]): T = null

但最后一个不起作用:编译器报告类型不匹配。

使用 null.asInstanceOf[T] 是否正确或者,还有更好的方法?当然我考虑只是扔 UnsupportedOperationException相反,在这种特殊情况下,但恕我直言,这个问题仍然很有趣。

最佳答案

这是因为 T可能是不可为空的类型。它在你强制执行 T 时有效成为可空类型:

def unwrap[T >: Null](iface: Class[T]): T = null

unwrap(classOf[String]) // compiles

unwrap(classOf[Int]) // does not compile, because Int is not nullable

关于scala - 如何从 Scala 中的泛型函数返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10065962/

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