小编Tom*_*sky的帖子

为什么Java中没有String.Empty?

据我所知,每次输入字符串文字时"",字符串池中都会引用相同的String对象.

但是为什么String API不包含a public static final String Empty = "";,所以我可以使用引用String.Empty

它至少可以节省编译时间,因为编译器会知道引用现有的String,而不必检查它是否已经被创建以供重用,对吧?我个人认为,在许多情况下,字符串文字的扩散,尤其是小字符串,是一种"代码味道".

那么,没有String.Empty背后有一个大设计理由,还是语言创作者根本没有分享我的观点?

java string

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

什么是领先的JavaScript库LINQ?

我正在寻找一个JavaScript库,它允许我使用类似LINQ的语法查询复杂的JSON对象.快速搜索找到了几个看起来可能提供我需要的有前景的选项:

LINQ to JavaScriptjLinq

  • 有没有人有使用它们的经验?
  • 有什么优点和缺点?
  • 性能是否可比?
  • LINQ to JavaScript的函数传递语法是否提供了任何隐藏的好处(我个人发现jLinq的语法在第一眼看上去更具吸引力)?
  • 你发现这两个项目都缺少什么?
  • 你有没有试过联系作者?他们的反应如何?
  • 哪个项目使用得更广泛?

编辑:

今天刚看到这个:jslinq.

我认为这将是第一个彻底试用的人.

javascript linq json

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

Java方法默认是静态的吗?

假设您正在foo()A类中编写方法.foo不会访问任何A的状态.你对foo的作用或行为方式一无所知.它可以做任何事情.

无论其他任何考虑因素,foo应该始终是静态的吗?为什么不?

似乎我的类总是在积累许多私有帮助器方法,因为我将任务分解并应用了only-write-it-once原则.其中大多数不依赖于对象的状态,但在类自己的方法之外永远不会有用.它们默认是静态的吗?结束大量内部静态方法是错误的吗?

java oop

65
推荐指数
9
解决办法
6025
查看次数

如何在JUnit 4中动态创建测试套件?

我想使用JUnit 4创建一个junit测试套件,其中要包含的测试类的名称在运行测试套件之前是未知的.

在JUnit 3中,我可以这样做:

public final class MasterTester extends TestCase
{
  /**
   * Used by junit to specify what TestCases to run.
   * 
   * @return a suite containing what TestCases to run
   */
  public static TestSuite suite() {
    TestSuite suite = new TestSuite();

    for(Class<?> klass : gatherTestClasses()) {
      suite.addTestSuite(klass);
    }

    return suite;
  }
}
Run Code Online (Sandbox Code Playgroud)

并让该gatherTestClasses()方法处理确定要运行的测试类.

在JUnit 4中,文档说使用注释:@SuiteClasses({TestClass1.class, TestClass2.class...})构建我的测试套件.有很多SO答案显示如何做到这一点.不幸的是,我看到的示例似乎不允许传递动态生成的TestClasses列表.

这个答案建议我必须继承BlockJUnit4ClassRunner我不想做的事情.

动态指定的测试套件似乎必须在某个地方的JUnit 4中.有谁知道在哪里?

java junit junit4

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

哪个标记应该用作Javadoc中的段落分隔符?

根据最佳实践,哪个更合适的HTML标记用于分解javadoc的段落/长节?

难道<p /> 还是<br />?为什么?

java comments javadoc

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

将相对路径转换为绝对路径

我有一个文件A的绝对路径.

我有一个从文件A的目录文件B的相对路径.该路径可能并将使用".."以任意复杂的方式上升目录结构.

例A:

  • C:\projects\project1\module7\submodule5\fileA

例B:

  • ..\..\module3\submodule9\subsubmodule32\fileB
  • ..\submodule5\fileB
  • ..\..\module7\..\module4\submodule1\fileB
  • fileB

如何组合这两个以获得文件B 的最简单的绝对路径?

java path

35
推荐指数
4
解决办法
4万
查看次数

PowerMock,模拟静态方法,然后在所有其他静态上调用实际方法

我正在设置一个类的静态方法.我必须在@Before注释的JUnit设置方法中执行此操作.

我的目标是设置类来调用实际方法,除了我明确模拟的那些方法.

基本上:

@Before
public void setupStaticUtil() {
  PowerMockito.mockStatic(StaticUtilClass.class);

  // mock out certain methods...
  when(StaticUtilClass.someStaticMethod(anyString())).thenReturn(5); 

  // Now have all OTHER methods call the real implementation???  How do I do this?
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,在StaticUtilClass方法中,public static int someStaticMethod(String s)不幸的是抛出一个RuntimeExceptionif null值.

所以我不能简单地将调用真实方法的明显路线作为默认答案,如下所示:

@Before
public void setupStaticUtil() {
  PowerMockito.mockStatic(StaticUtilClass.class, CALLS_REAL_METHODS); // Default to calling real static methods

  // The below call to someStaticMethod() will throw a RuntimeException, as the arg is null!
  // Even …
Run Code Online (Sandbox Code Playgroud)

java junit mockito powermock

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

设置私有静态字段的值

我想使用反射来设置私有字段的值以进行单元测试.

问题是,该字段是静态的.

这是我正在做的工作:

/**
   * Use to set the value of a field you don't have access to, using reflection, for unit testing.
   * 
   * Returns true/false for success/failure.
   * 
   * @param p_instance an object to set a private field on
   * @param p_fieldName the name of the field to set
   * @param p_fieldValue the value to set the field to
   * @return true/false for success/failure
   */
  public static boolean setPrivateField(final Object p_instance, final String p_fieldName, final Object p_fieldValue) { …
Run Code Online (Sandbox Code Playgroud)

java reflection unit-testing

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

与构造函数同名的方法 - 为什么?

为什么允许以下内容:

public class Foo {
  public Foo() { ... }
  public void Foo() { ... }
}
Run Code Online (Sandbox Code Playgroud)

是否有正当理由将方法命名为与类相同?

java oop

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

什么时候应该在Java中使用本地类?

我刚刚在Java中发现了本地类:

public final class LocalClassTest
{
  public static void main(final String[] args) {
    for(int i = 10; i > 0; i--) {
      // Local class definition--declaring a new class local to the for-loop
      class DecrementingCounter {
        private int m_countFrom;

        public DecrementingCounter(final int p_countFrom) {
          m_countFrom = p_countFrom;
        }

        public void count() {
          for (int c = m_countFrom; c > 0; c--) {
            System.out.print(c + " ");
          }
          System.out.println();
        }
      }

      // Use the local class
      DecrementingCounter dc = new DecrementingCounter(i); …
Run Code Online (Sandbox Code Playgroud)

java oop

23
推荐指数
1
解决办法
4655
查看次数