小编Den*_*sca的帖子

为什么这个通用代码在java 8中编译?

我偶然发现了一段代码,让我想知道为什么它成功编译:

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)

java generics compiler-errors java-8

42
推荐指数
3
解决办法
4254
查看次数

持续集成:确保新的提交包含在测试中

我正在开发一个项目,其中包含许多未包含在测试中的遗留代码.

有什么办法可以设置集成服务器来检查所有新提交是否都有最少量的测试(例如,覆盖率> 70%)?

基本上,我看到两个选项:

  1. 如果单元测试未涵盖已提交的更改,则会以某种方式将CI服务器设置为使构建失败.这将确保每个新代码都有测试,并且遗留代码的测试将随着每次更改而增加.
  2. 设置整个项目的覆盖阈值,如果提交后覆盖百分比减少,则构建失败.这样做的问题是,如果我删除一个包含100条指令的类并添加一个包含50条指令的新类,则覆盖百分比将会上升而不会编写任何测试.

我更喜欢选项1,因为它强制遗留代码中的更改进行单元测试.这应该会增加整体测试覆盖率.

现在我们使用Jenkins作为我们的CI服务器,使用JaCoCo作为测试覆盖.Maven用于构建项目,SVN是我们的主要源代码控制.

java continuous-integration code-coverage jenkins jacoco

14
推荐指数
1
解决办法
1775
查看次数

通过wcf服务发送带有自定义属性的对象

我刚刚开始学习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类型的属性时,我找不到任何.

这可能吗?如果是,您可以提供有关如何实现此类行为的任何提示吗?

谢谢.丹尼斯.

c# wcf attributes

7
推荐指数
1
解决办法
6283
查看次数

如何(重新)定义在根项目上运行以在sbt 0.13中启动聚合的Play(子)项目

我正在尝试创建一个多项目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)

scala sbt playframework-2.2

5
推荐指数
2
解决办法
2059
查看次数

首先运行SBT而不安装它

我想知道SBT是否有类似于Gradle Wrapper的东西?

我想在CI服务器上使用它,而不必先安装SBT.文档提到了一个sbt-launcher,但这似乎是为了运行实际的应用程序而不是构建.

sbt

5
推荐指数
1
解决办法
568
查看次数