我正在编写我自己的简单javax.sql.DataSource
实现,我需要工作的唯一方法是getConnection: Connection
,但接口继承了javax.sql.CommonDataSource
和java.sql.Wrapper
许多其他方法(我不需要)。所以,我想“实施”那些不需要的方法,这样他们就不会真正起作用,但在被调用时会表现出合适的方式。比如我实现boolean isWrapperFor(Class<?> iface)
作为如何从Scala中的泛型函数中返回null?
def isWrapperFor(iface: Class[_]): Boolean = false
,我想实现<T> T unwrap(Class<T> iface)
作为
但最后不工作:编译报告类型不匹配。
使用null.asInstanceOf[T]
是否正确?还是有更好的方法?当然,我认为只是抛出UnsupportedOperationException
而不是在这种特殊情况下,但恕我直言,这个问题仍然可以是有趣的。
没有新的Scala中有非空类型...我认为'Int'可以与Java原语'int'不同... – Ivan 2012-04-08 20:20:10
Int是AnyVal类型,值类型不可为空。 – drexin 2012-04-08 20:45:57
@oxbow_lakes提到,尽管在大多数情况下抛出比返回null更可取 – 2012-04-09 05:49:22