我偶然发现了一段代码,让我想知道为什么它成功编译:
public class Main {
public static void main(String[] args) {
String s = newList(); // why does this line compile?
System.out.println(s);
}
private static <T extends List<Integer>> T newList() {
return (T) new ArrayList<Integer>();
}
}
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我修改方法的签名newList
与<T extends ArrayList<Integer>>
它不工作了.
注释和响应后更新: 如果我将泛型类型从方法移动到类,则代码不再编译:
public class SomeClass<T extends List<Integer>> {
public void main(String[] args) {
String s = newList(); // this doesn't compile anymore
System.out.println(s);
}
private T newList() {
return (T) new ArrayList<Integer>();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,其中包含许多未包含在测试中的遗留代码.
有什么办法可以设置集成服务器来检查所有新提交是否都有最少量的测试(例如,覆盖率> 70%)?
基本上,我看到两个选项:
我更喜欢选项1,因为它强制遗留代码中的更改进行单元测试.这应该会增加整体测试覆盖率.
现在我们使用Jenkins作为我们的CI服务器,使用JaCoCo作为测试覆盖.Maven用于构建项目,SVN是我们的主要源代码控制.
我刚刚开始学习WCF,因为我需要它来完成学校作业.但是当我尝试发送带有一些自定义属性的对象时,我遇到了问题.对象是:
[DataContract]
public class Person
{
[DataMember]
[Searchable("ID")]
public virtual String ID
{
get;
set;
}
[DataMember]
[Searchable("LastName")]
public virtual String LastName
{
get;
set;
}
[DataMember]
[Searchable("FirstName")]
public virtual String FirstName
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
自定义属性是:
[DataContract]
[AttributeUsage(AttributeTargets.Property)]
public class Searchable:Attribute
{
public Searchable(String PropertyName)
{
this.PropertyName = PropertyName;
}
[DataMember]
public virtual String PropertyName
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
我使用svcutil生成配置文件和客户端.客户端和服务之间的通信正在顺利进行.但是当我收到Person类型的对象并尝试搜索Searchable类型的属性时,我找不到任何.
这可能吗?如果是,您可以提供有关如何实现此类行为的任何提示吗?
谢谢.丹尼斯.
我正在尝试创建一个多项目SBT构建定义.我在run
根项目上执行命令时遇到问题.
文件夹结构如下:
RootProjectFolder
|
|- build.sbt
|- project
|
|-Build.scala
|-plugins.sbt
|
| - play-webapp
Run Code Online (Sandbox Code Playgroud)
该Build.scala
文件的内容是:
import sbt._
import Keys._
import play.Project._
object ApplicationBuild extends Build {
val appName = "project-name"
val appVersion = "0.1.0-SNAPSHOT"
lazy val root = Project(id = appName + "-root",
base = file(".")
).aggregate(webApp)
lazy val webApp = play.Project(
appName + "-website", appVersion, path = file("play-webapp")
)
}
Run Code Online (Sandbox Code Playgroud)
当我启动SBT时,我收到以下消息:Set current project to project-name-root
这意味着正确检测到根项目.
当我执行run
命令时,我收到以下错误消息
> run
java.lang.RuntimeException: No …
Run Code Online (Sandbox Code Playgroud) 我想知道SBT是否有类似于Gradle Wrapper的东西?
我想在CI服务器上使用它,而不必先安装SBT.文档提到了一个sbt-launcher,但这似乎是为了运行实际的应用程序而不是构建.