我有一个非常经典build.sbt的Play 2.3 Scala项目,具有以下libraryDependencies设置:
libraryDependencies ++= Seq(
"org.scalatestplus" % "play_2.10" % "1.1.0" % "test"
"org.mockito" % "mockito-core" % "1.9.5" % "test"
)
lazy val portal = (project in file(".")).enablePlugins(PlayScala)
Run Code Online (Sandbox Code Playgroud)
该PlayScala插件增加specs2了"污染"类路径的依赖性,并使IDE中的导入更加困难.
如何从中删除依赖项libraryDependencies?
我在使用泛型时遇到了麻烦.给出以下示例:
class A<T> {
public A(Class<T> myType){
}
}
class B<E> extends A<Collection<E>> {
public B(Class<E> myEType){
super(???);
}
}
Run Code Online (Sandbox Code Playgroud)
什么 ???应该 ?
Collection.class不工作......
Collection<E>.class都没有.
(Class<Collection<E>>)Collection.class不工作...
如果有一个java泛型大师,我需要帮助......:/
我试图用 JPA 实体实现 Generation Gap Pattern。这是我们选择的解决方案( <-- 是继承)
BaseEntity <-- EntityGenerated <-- Entity
Run Code Online (Sandbox Code Playgroud)
EntityGenerated 类型是抽象的并使用@MappedSuperclass 映射,所有字段都使用正确的映射注释生成,关系指向具体的子类,而不是 Generated 。
Entity 是一个具体的类型,只有当类不存在时才生成,最初只有用@Entity 注释的类声明。其他映射属性(如@Table 等)位于生成的 orm.xml 中。
现在,当我们生成 jpa 静态元模型(使用 hibernate 或 openjpa 元模型生成器)时,生成的类如下所示:
public class BaseEntity_ {
public static volatile SingularAttribute<PersistentDomainObject,Long> id;
public static volatile SingularAttribute<PersistentDomainObject,Long> timeStamp;
}
public class UserGenerated_ extends BaseEntity_ {
public static volatile SetAttribute<UserGenerated,Group> groups;
}
public class User_ extends UserGenerated_ {
}
Run Code Online (Sandbox Code Playgroud)
如果我想在 jpa 条件查询中使用 User_,我将执行以下操作:
CriteriaQuery<User> query = criteriaBuilder.createQuery(User.class);
Root<User> root = query.from(User.class);
query.where(root.get(User_.groups).in(paramGroups));
Run Code Online (Sandbox Code Playgroud)
但它不会编译.... User_.groups …
我是scala的初学者,不明白这里发生了什么:
鉴于:
val reverse:Option[MyObject] = ...
Run Code Online (Sandbox Code Playgroud)
并myObject.isNaire返回布尔值.
如果我做 :
val v:Option[Boolean] = reverse.map(_.isNaire)
val b:Boolean = v.getOrElse(false)
Run Code Online (Sandbox Code Playgroud)
这行得通.
现在,如果我这样做:
val b:Boolean = reverse.map(_.isNaire).getOrElse(false)
Run Code Online (Sandbox Code Playgroud)
它无法编译 type mismatch: found Any, required Boolean
编辑:谢谢Beryllium,通过制作SSCCE,我找到了解释的开始.在第一个示例中,myObject是一个java类,因此isNaire是一个java.lang.Boolean.我认为隐式转换应该使这个透明,所以解释仍然是受欢迎的.
class Test(val naire:java.lang.Boolean)
class Other {
val testValue = Some(new Test(true))
def mysteriousCompilationError:Boolean = testValue.map(_.naire).getOrElse(false)
}
Run Code Online (Sandbox Code Playgroud)
注意:ScalaCompiler是2.10.2