小编rol*_*lve的帖子

在Java程序的主线程中调用System.exit(0)和Thread.currentThread().interrupt()有什么区别?

两者都会导致程序停止执行.但很明显,这种情况必然存在一些差异.这些是什么?

java multithreading interrupt

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

如何在Java中比较两个数字?

可能重复:
比较两个通用数字的值

我想比较两个任意的Number实例来找出哪个更大.如您所知,这些可能是整数,长整数或双数,但也可能是BigIntegers或BigDecimals.那么该怎么办?

  1. Number没有实现Comparable.
  2. 无法使用,doubleValue()因为BigDecimals或BigIntegers可能会丢失精度.

我真的必须进行实例测试和投射吗?这里必须有一些库,做到这一点.但我已经检查过Apache Commons和Guava没有运气.

编辑1:评论指出了这一点:比较两个通用数字的值.它有一个解决方案,使用将所有内容转换为BigDecimal toString().真的没有更好的方法吗?

编辑2:我刚发布了自己的版本作为另一个问题的答案.它应该比公认的答案更有效和更强大.

java compare numbers

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

Xtext可以用于解析通用编程语言吗?

我目前正在开发一种基于代理的通用编程语言(它的语法将受到Java的启发,我们也使用这种语言的对象).

自项目开始以来,我们怀疑使用ANTLRXtext的事实.那时我们发现Xtext正在实现ANTLR功能的一个子集.所以我们决定在我们的语言中使用ANLTR,失去了为我们的语言免费提供一个完整的Eclipse编辑器的可能性(这是Xtext提供的一个很好的功能).

然而,据我所知,今年夏天Xtext项目向前迈出了大步.引用链接:

Xtext有什么限制?

Sven:您可以使用Xtext实现几乎任何类型的编程语言或DSL.有一个例外,那就是如果你需要使用所谓的"语义谓词",这是一个相当复杂的事情我不认为值得在这里解释.很少有语言真正需要这个概念.然而,突出的例子是C/C++.我们想在下一个版本中查看该主题.

Xtext文档中也强调了这一点:

什么是Xtext?无论您是想创建一个小的文本域特定语言(DSL),还是想要实现一个完整的通用编程语言.使用Xtext,您可以快速创建自己的语言.此外,如果您已经拥有现有语言但缺乏合适的工具支持,则可以使用Xtext创建复杂的基于Eclipse的开发环境,从而在极短的时间内提供现代Java IDE所知的编辑体验.我们称Xtext为语言开发框架.

如果Xtext已经摆脱了过去的限制,为什么仍然无法为最着名的编程语言(Java,C#等)找到复杂的Xtext语法?

在ANTLR网站上,您可以找到大量这样的语法示例,对于Xtext而言,我能够找到的唯一示例是文档中报告的示例.也许Xtext仍然不成熟,无法用于实现通用编程语言?我有点担心这个...我不会开始在Xtext中重写语法,然后才能认识到它不适合那个.

parsing antlr xtext antlr3

19
推荐指数
1
解决办法
7249
查看次数

什么是 mockito-inline 以及它如何模拟最终方法?

Mockito 中的 Javadocs 说——“从 2.7.6 版开始,我们提供了‘mockito-inline’工件,它可以在不配置 MockMaker 扩展文件的情况下启用内联模拟制作”。这是什么意思?mockito-inline 是如何工作的?为什么要为 mockito-inline 制作一个单独的工件?

java testing unit-testing mockito

17
推荐指数
1
解决办法
2808
查看次数

如何在Spring中使用@ComponentScan懒洋洋地加载所有bean?

我正在使用基于Java的配置来设置我的Spring应用程序上下文,如下所示:

@Configuration
@Lazy
@ComponentScan(basePackageClasses = {MyProject.class, OtherProject.class})
public class MyAppConfig {
    ...
}
Run Code Online (Sandbox Code Playgroud)

在配置中明确定义的Bean会像您期望的那样懒惰地加载.但是,注释的扫描类@Named总是急切地加载.我怎么解决这个问题?

任何帮助表示赞赏.


请注意,对于MyProject包中的类,我也可以通过注释它来解决这个问题@Lazy.但是另一个项目没有依赖Spring,我想保持它(因此@Named而不是@Component).


另请注意,这不会成为基于XML的配置中的问题.目前,设置default-lazy-init="true"<beans>标签接缝处做我想做的(虽然我没有测试过).

java spring dependency-injection

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

如何以编程方式调用Scala编译器?

我希望我的Scala代码将Scala类作为输入,编译并执行该类.如何以编程方式调用Scala编译器?我将使用最新的Scala版本,即2.10.

scala scala-compiler

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

GitHub优于Bitbucket的Git存储库的优点

既然Bitbucket也支持Git存储库,那么它对我来说它是GitHub的一个很好的替代品,特别是因为它的免费计划包括无限的私有存储库,这在GitHub上是不可用的.然而,GitHub接缝更受欢迎.

是否有任何主要原因选择GitHub作为Git存储库的托管站点而不是Bitbucket?

(虽然我一般公开提供个人项目没有任何问题,但我喜欢在任何时候能够从公共转换到私有或反之亦然的想法.但是如果有充分的理由使用GitHub,我愿意放弃这种自由.)

git version-control dvcs github bitbucket

11
推荐指数
1
解决办法
3480
查看次数

在多个方面修改参数,提供建议

我有两个方面,每个方面修改方法参数.当两个方面都应用于同一个方法时,我希望将方面的执行链接起来,并且我希望第一个方面中修改的参数可用于第二个方面.joinPoint.getArgs();但是,似乎每个方面只获得原始论点; 第二个方面永远不会看到修改后的值.我设计了一个例子:

测试类:

public class AspectTest extends TestCase {
    @Moo
    private void foo(String boo, String foo) {
        System.out.println(boo + foo);
    }

    public void testAspect() {
        foo("You should", " never see this");
    }
}
Run Code Online (Sandbox Code Playgroud)

方法foo()由两个方面建议:

@Aspect
public class MooImpl {

    @Pointcut("execution(@Moo * *(..))")
    public void methodPointcut() {}

    @Around("methodPointcut()")
    public Object afterMethodInControllerClass(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("MooImpl is being called");
        Object[] args = joinPoint.getArgs();
        args[0] = "don't";
        return joinPoint.proceed(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

和...

@Aspect
public class DoubleMooImpl {

    @Pointcut("execution(@Moo * *(..))") …
Run Code Online (Sandbox Code Playgroud)

java aop aspectj

11
推荐指数
1
解决办法
5008
查看次数

如何在Maven中运行JMH基准测试使用exec:java而不是exec:exec?

这篇关于javapapers.com的文章展示了如何通过输入在Maven中运行JMH基准测试mvn exec:exec.在Maven中运行JMH非常方便,因为您可以从Eclipse Run Configuration甚至Maven阶段轻松运行它.

但是,此设置存在两个问题:

  1. 当您杀死Maven时,JMH将继续在后台运行,因为exec:exec它在一个单独的VM中启动.

  2. 通常,JMH将启动另一个 VM来运行基准测试,因此您最终将同时运行至少3个VM.

幸运的是,Exec Maven Plugin带来了第二个目标exec:java,它直接在VM Maven运行中执行主类.但是,当我尝试配置Maven以使用JMH时exec:java,由于缺少类,基准测试崩溃:

# JMH 1.11.3 (released 40 days ago)
# VM version: Error: Could not find or load main class org.openjdk.jmh.runner.VersionMain
# VM invoker: C:\Program Files\Java\jdk1.7.0\jre\bin\java.exe
[...]
# Run progress: 0.00% complete, ETA 00:02:40
# Fork: 1 of 1
Error: Could not find or load main class org.openjdk.jmh.runner.ForkedMain
<forked VM failed with exit code 1> …
Run Code Online (Sandbox Code Playgroud)

java maven jmh

10
推荐指数
2
解决办法
2361
查看次数

如何在Scala中以String格式重复参数

如何重复使用相同的字符串进行格式放置?例如

"%s-%s-%s" format("OK")
>> "OK-OK-OK"
Run Code Online (Sandbox Code Playgroud)

java scala string-formatting

9
推荐指数
2
解决办法
2854
查看次数