小编Pau*_*kin的帖子

Eclipse优化导入以包含静态导入

无论如何让Eclipse自动查找静态导入?例如,现在我终于升级到了Junit 4,我希望能够写:

assertEquals(expectedValue, actualValue);
Run Code Online (Sandbox Code Playgroud)

点击Ctrl+ Shift+ O并添加Eclipse:

import static org.junit.Assert.assertEquals;
Run Code Online (Sandbox Code Playgroud)

也许我问的太多了.

java eclipse keyboard-shortcuts

405
推荐指数
7
解决办法
10万
查看次数

Java 8传递方法作为参数

目前正在进入Java 8 lambda表达式和方法引用.

我想传递一个没有args且没有返回值的方法作为另一个方法的参数.这就是我这样做的方式:

public void one() {
    System.out.println("one()");
}

public void pass() {
    run(this::one);
}

public void run(final Function function) {
    function.call();
}

@FunctionalInterface
interface Function {
    void call();
}
Run Code Online (Sandbox Code Playgroud)

我知道有一组预定义功能接口在java.util.function诸如Function<T,R>,但我没有找到一个不带任何参数,而不是产生结果.

java lambda java-8 method-reference

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

如何处理Findbugs"可序列化类中的非瞬态非可序列化实例字段"?

考虑下面的课程.如果我针对它运行Findbugs,它将在第5行给出一个错误("可序列化类中的非瞬态非可序列化实例字段")但不在第7行.

1 public class TestClass implements Serializable {
2
3  private static final long serialVersionUID = 1905162041950251407L;
4
5  private Set<Integer> mySet;      // Findbugs error
6
7  private HashSet<Integer> myOtherSet;
8
9 }
Run Code Online (Sandbox Code Playgroud)

这是正确的,因为java.util.Set从不在其层次结构中实现Serializable,而java.util.HashSet也是如此.但是,最佳做法是针对接口而不是具体实现进行编码.

我怎样才能最好地处理这件事?

我可以在第3行添加@Suppresswarnings(justification ="No bug",values ="SE_BAD_FIELD").我的实际代码中有很多集合和列表,我担心它会丢失我的代码太多.

还有更好的方法吗?

java serialization findbugs

53
推荐指数
5
解决办法
6万
查看次数

Enterprise Architect:高质量地导出UML图

使用Enterprise Architect(版本9.2),我创建了一些类和序列UML图.现在我需要Word文档中的那些图表.

我的第一种方法是使用Windows 7 Snipping Tool将它们剪切掉并粘贴到文档中.但是出于印刷目的,质量太差了.

第二种方法是Enterprise Architect中提供的"将它们另存为图像".但有了这个,质量更差.

第三种方法是将它们导出为pdf文件.有了这个,质量相当不错,我可以将这些pdf导入到Inkscape中,然后将它们转换为*.png文件,将它们导入到word中.问题是,Enterprise Architect有点失败了.意味着图片本身具有高质量,但它试图转换类的字体,然后我在字母之间有一些空格,应该没有.

长话短说 - 有没有办法将我的UML图从Enterprise Architect导出到像.png或者这样的常见图片格式.tiff,同时保持不错的质量?

uml class-diagram image enterprise-architect

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

无根测试

在Eclipse中运行我的所有测试(Eclipse 3.4'Ganymede')时,在"Unrooted Tests"下列出了一个测试.我正在使用Junit 3.8,这个特殊的测试扩展了TestCase.我认为这个测试和其他测试之间没有任何区别.我不记得在Eclipse 3.3(Europa)中发生这种情况.

澄清:

我们还没有转移到JUnit 4.0,所以我们没有使用注释.我也用Google搜索,似乎大多数人都遇到了JUnit 4的问题,但我没有看到任何解决方案.此时测试通过本地和CruiseControl传递,所以我并不过分担心,但很好奇.

但是,当我第一次看到这个时,它是在一个失败的测试中,只有在与其他测试一起运行时才会失败.这让我陷入了兔子洞,寻找解决我从未找到的"无根"问题的解决方案.最终我发现了另一个没有正确拆除的测试的罪魁祸首.

我同意,它看起来像Eclipse问题.

java eclipse junit ganymede eclipse-3.4

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

如何在Eclipse中强制线程转储?

我正在通过BEA Weblogic Server v9.2运行时环境在Eclipse中启动Weblogic应用程序.如果这是直接从命令行运行,我会执行ctrl-BREAK来强制进行线程转储.有没有办法在Eclipse中做到这一点?

java eclipse memory-leaks weblogic

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

Java XML绑定

你用什么来将XML绑定到Java?JAXB,Castor和XMLBeans是一些可用的选择.我见过的比较都是三四年了.我愿意接受其他建议.编组/解组的性能和易用性是特别令人感兴趣的.

澄清:我不仅希望看到您使用的框架,而且还希望看到使用其中一个框架的原因.

java xml xmlbeans castor jaxb

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

memberOf中的LDAP搜索通配符

我们有一个LDAP,其中包含许多遵循此模式的组:

Acme-MyApp-ABC-Admin Acme-MyApp-ABC-Bottlewasher Acme-MyApp-ABC-Cook Acme-MyApp-DEF-Admin Acme-MyApp-DEF-Bottlewasher Acme-MyApp-DEF-Cook等重复多次.

Acme-MyApp-ABC-Admin
Acme-MyApp-ABC-Bottlewasher
Acme-MyApp-ABC-Cook
Acme-MyApp-DEF-Admin
Acme-MyApp-DEF-Bottlewasher
Acme-MyApp-DEF-Cook
Run Code Online (Sandbox Code Playgroud)

正确返回Acme-MyApp-ABC-Admin组的成员.我们想找到所有管理员组的成员.

(&(objectClass=person)(memberOf=cn=Acme-MyApp-ABC-Admin,ou=Groups,dc=acme,dc=com))
Run Code Online (Sandbox Code Playgroud)

是否可以在DN中放置通配符?

ldap openldap ldap-query

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

生产和测试代码常量之间的干燥

我通常会尽量避免重复并遵守DRY原则.但是,我想知道这样的情况:

public class Feature {
    final static String FEATURE_LABEL = "blah";

    public void doSomething() { ... }
    ...
}

public class FeatureTest {
    ...
    @Test
    public void doSomethingShouldMakeSomethingHappen() {
         assertEquals(Feature.FEATURE_LABEL, 
             feature.getSomethingHappens().getLabel());
    }
Run Code Online (Sandbox Code Playgroud)

如果要求标签是"blah"并且某人将FEATURE_LABEL更改为"bleh",则即使测试不再符合要求,测试也会通过.这是否是违反DRY的有效地方?

unit-testing constants dry

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

Eclipse代码模板的Eclipse自定义变量

如何添加要插入Java代码模板的新变量.如何在Window-> Preferences-> Java-> Code Style-> Code Templates-> Code-> New Java Files-> Edit-> Insert Variable ...?中向列表添加变量?

目前,我的新文件创建时使用:

${filecomment}
${package_declaration}
${typecomment}
${type_declaration}
Run Code Online (Sandbox Code Playgroud)

我希望他们能够像以下一样创建:

${begin_filecomment}
${package_declaration}
${typecomment}
${type_declaration}
${end_filecomment}
Run Code Online (Sandbox Code Playgroud)

其中begin_filecomment和end_filecomment出现在"插入变量"列表中.

java eclipse templates

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