小编Tho*_*ung的帖子

定义一个引发Exception的lambda表达式

我怎么能写一个相当于的lambda表达式:

def x():
    raise Exception()
Run Code Online (Sandbox Code Playgroud)

以下是不允许的:

y = lambda : raise Exception()
Run Code Online (Sandbox Code Playgroud)

python

120
推荐指数
8
解决办法
3万
查看次数

如何在注释中使用数组常量

我想将常量用于注释值.

interface Client {

    @Retention(RUNTIME)
    @Target(METHOD)
    @interface SomeAnnotation { String[] values(); }

    interface Info {
        String A = "a";
        String B = "b";
        String[] AB = new String[] { A, B };
    }

    @SomeAnnotation(values = { Info.A, Info.B })
    void works();

    @SomeAnnotation(values = Info.AB)
    void doesNotWork();
}
Run Code Online (Sandbox Code Playgroud)

常数Info.AInfo.B可以在注释中使用,但不是数组Info.AB,因为它必须是在这个地方数组初始化.注释值仅限于可以内联到类的字节代码中的值.这对于数组常量是不可能的,因为它必须在Info加载时构造.这个问题有解决方法吗?

java annotations

48
推荐指数
3
解决办法
3万
查看次数

Oracle Bug数据库在哪里?

他们必须在某处隐藏bug数据库.我找不到谷歌了.bug数据库是公开的吗?

oracle bug-tracking

28
推荐指数
3
解决办法
5万
查看次数

ORM支持不可变类

哪个ORM支持不可变类型的域模型?

我想写下面的类(或Scala等价物):

class A {
  private final C c; //not mutable

  A(B b) {
     //init c
  }

  A doSomething(B b) {
     // build a new A
  }
}
Run Code Online (Sandbox Code Playgroud)

ORM必须使用构造函数初始化对象.因此可以在构造函数中检查不变量.默认构造函数和字段/ setter访问intialize是不够的,并且使类的实现变得复杂.

应支持使用集合.如果更改了集合,则应从用户角度创建副本.(渲染旧的集合状态陈旧.但用户代码仍然可以工作(或至少读取).)就像持久数据结构一样.

关于动机的一些话.假设您有一个FP风格的域对象模型.现在,您希望将其保留到数据库中.你是谁做的?你希望在纯粹的功能样式中尽可能多地做到这一点,直到邪恶的一面效果进入.如果你的域对象模型不是不可变的,你可以例如不在线程之间共享对象.您必须复制,缓存或使用锁.因此,除非您的ORM支持不可变类型,否则您在选择解决方案时受到限制.

java orm types hibernate scala

28
推荐指数
2
解决办法
4247
查看次数

Ploeh的AutoFixture for .Net是否有Java替代方案?

我正在寻找一个Java工具,可以在我的测试中创建匿名变量(我不关心它的值的变量),类似于.Net中的AutoFixture.这是AutoFixture自述文件的链接,它有很好的例子.

以下是同一自述文件中的简短示例:

[TestMethod]
public void IntroductoryTest()
{
    // Fixture setup
    Fixture fixture = new Fixture();

    int expectedNumber = fixture.CreateAnonymous<int>();
    MyClass sut = fixture.CreateAnonymous<MyClass>();
    // Exercise system
    int result = sut.Echo(expectedNumber);
    // Verify outcome
    Assert.AreEqual<int>(expectedNumber, result, "Echo");
    // Teardown
}
Run Code Online (Sandbox Code Playgroud)

Java世界中有这样的工具吗?

编辑:

我尝试过QuickCheck,虽然它设法做了我想要的事情:

import net.java.quickcheck.Generator;
import net.java.quickcheck.generator.PrimitiveGenerators;
import net.java.quickcheck.generator.support.ObjectGeneratorImpl;

public class Main {

interface Test{
     String getTestValue();
}

public static void main(String[] args) {
    Generator<String> stringGen = PrimitiveGenerators.strings(5, 100);
    Generator<Integer> intGen = PrimitiveGenerators.integers(5, 20);

    ObjectGeneratorImpl<Test> g = …
Run Code Online (Sandbox Code Playgroud)

java unit-testing mocking quickcheck autofixture

20
推荐指数
2
解决办法
3631
查看次数

使用maven为eclipse编译器设置Java 6注释处理配置

为Java 6注释处理器设置eclipse项目编译器配置的最佳方法是什么?

我的解决方案是手动设置org.eclipse.jdt.apt.core.prefsfactorypath文件.这有点麻烦:

  • 引用factorypath文件中的处理器jar
  • 配置eclipse注释处理器输出目录(org.eclipse.jdt.apt.genSrcDir属性org.eclipse.jdt.apt.core.prefs)
  • 添加eclipse注释处理器输出目录作为源文件夹

一个问题是eclipse生成的源将使用maven编译.只有maven clean compile可靠,因为它删除了eclipse生成的源文件.(Eclipse和javac生成的源文件可能不同步.)

有没有更好的解决方案来配置maven没有eclipse生成的源文件在maven源路径?

<project>
  <properties>
    <eclipse.generated.src>${project.build.directory}/eclipse</eclipse.generated.src>
  </properties>
  <build>
      <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.4</version>
            <executions>
                <execution>
                  <id>add-source</id>
                  <phase>generate-sources</phase>
                  <goals> <goal>add-source</goal> </goals>
                  <configuration>
                      <sources>
                        <source>${eclipse.generated.src}</source>
                      </sources>
                    </configuration>
              </execution>
            </executions>
          </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <configuration>
          <additionalConfig>
            <file> <name>.factorypath</name>
        <content><![CDATA[<factorypath>
  <factorypathentry kind="VARJAR" id="M2_REPO/processor/processor.jar" enabled="true" runInBatchMode="false"/>
  </factorypath>
  ]]>      </content>
            </file>
            <file>
              <name>.settings/org.eclipse.jdt.apt.core.prefs</name>
        <content><![CDATA[
  eclipse.preferences.version=1
  org.eclipse.jdt.apt.aptEnabled=true
  org.eclipse.jdt.apt.genSrcDir=${eclipse.generated.src}
  org.eclipse.jdt.apt.reconcileEnabled=true
   ]]>     </content>
            </file>
          </additionalConfig>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
Run Code Online (Sandbox Code Playgroud)

java eclipse maven-2 annotations javac

16
推荐指数
1
解决办法
1万
查看次数

Functional Java和Guava之间有很好的比较吗?

我想在我将要教授的课程中使用Functional Java或Guava(或者不太可能使用Scala).尽管在JVM上运行了很多函数式语言,但我仍然希望看到与Java尽可能相似的东西,即在Java 8中具有的功能特性,在概念和语法上最兼容的东西. .

它看起来像Functional JavaGuava是最好的候选者.我无法在功能,易用性,概念接近直接Java等方面找到任何比较它们的东西.有没有人知道这些库之间的良好比较?

java functional-programming functional-java guava

13
推荐指数
2
解决办法
3928
查看次数

在返回类型上重载?

scala> val shares = Map("Apple" -> 23, "MicroSoft" -> 50, "IBM" -> 17)
shares: scala.collection.immutable.Map[java.lang.String,Int] 
      = Map(Apple -> 23, MicroSoft -> 50, IBM -> 17)

scala> val shareholders = shares map {_._1}                           
shareholders: scala.collection.immutable.Iterable[java.lang.String] 
            = List(Apple, MicroSoft, IBM)

scala> val newShares = shares map {case(k, v) => (k, 1.5 * v)}     
newShares: scala.collection.immutable.Map[java.lang.String,Double] 
         = Map(Apple -> 34.5, MicroSoft -> 75.0, IBM -> 25.5)
Run Code Online (Sandbox Code Playgroud)

从这个例子看,这个map方法似乎在返回类型上重载.在返回类型上重载是不可能的?有人请解释这里发生了什么?

scala

12
推荐指数
2
解决办法
2241
查看次数

使用更改的提示PS1启动bash过程

如何使用更改的提示启动bash子进程.使用env不起作用:

env PS1="change >" bash --login
Run Code Online (Sandbox Code Playgroud)

不起作用.结果应与启动进程后使用export相同:

$ export PS1="change >"
change >
Run Code Online (Sandbox Code Playgroud)

~/.bashrc 必须像往常一样进行评估.

bash shell

12
推荐指数
3
解决办法
3103
查看次数

测量JVM的CPU使用情况:java代码

有没有办法测量JVM的CPU使用率(一旦启动java应用程序)跨平台(windows + unix + mac)?我使用过Jconsole,但我需要的是一个执行此操作的java代码,而不是一个可以监视CPU利用率的工具.我试过了

ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage()
Run Code Online (Sandbox Code Playgroud)

使用JMX,但它没有帮助,因为我需要的是JVM的特定CPU使用率(比如当我启动服务器时),而不是系统负载平均值.

java performance jmx cross-platform cpu-usage

11
推荐指数
2
解决办法
3万
查看次数