小编use*_*011的帖子

Boolean.hashCode()

类Boolean的hashCode()方法实现如下:

public int hashCode() {
    return value ? 1231 : 1237;
}
Run Code Online (Sandbox Code Playgroud)

为什么使用1231和1237?为什么不是别的?

java boolean hashcode

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

使用私有构造函数扩展类

假设我们有以下代码:

class Test {
    private Test() {
        System.out.println("test");
    }

}

public class One extends Test {

    One() {
        System.out.println("One");
    }

    public static void main(String args[]) {

        new One();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我们创建一个对象时One,它最初被称为父类构造函数Test().但Test()私有 - 我们得到一个错误.一个很好的例子和摆脱这种情况的方法多少钱?

java constructor

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

选择并测试java反编译器

现在我正在尝试找到最好的java反编译器,我发现了这些:

使用这些反编译器,我处理此类的字节代码:

public class ss
{
public static void main(String args[])
{
  try{
   System.out.println("try");

  }
  catch(Exception e)
  {
   System.out.println("catch");
  }
  finally
  {System.out.println("finally");}
}
}
Run Code Online (Sandbox Code Playgroud)

我得到了以下结果:

fernflower:

public class ss {

   public static void main(String[] var0) {
      try {
         System.out.println("try");
      } catch (Exception var5) {
         System.out.println("catch");
      } finally {
         System.out.println("finally");
      }

   }
}
Run Code Online (Sandbox Code Playgroud)

DJ Java Decompiler:

import java.io.PrintStream;

public class ss
{

    public ss()
    {
    }

    public static void main(String args[])
    {
        System.out.println("try");
        System.out.println("finally");
        break MISSING_BLOCK_LABEL_50;
        Exception …
Run Code Online (Sandbox Code Playgroud)

java decompiler

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

如何使用反射在构造函数中使用参数创建类的实例?

例如:

public class Test {

    public static void main(String[] args) throws Exception {
        Car c= (Car) Class.forName("Car").newInstance();
        System.out.println(c.getName());
    }
}

class Car {
    String name = "Default Car";
    String getName(){return this.name;}
}
Run Code Online (Sandbox Code Playgroud)

明确的代码.

但是,如果我用params添加构造函数,有些像这样:

public Car(String name)
{this.name = name;}
Run Code Online (Sandbox Code Playgroud)

我知道了: java.lang.InstantiationException

所以,不,我不知道,如何通过params传递构造函数.

请帮忙.

java reflection class

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

为什么ArrayList有"实现List"?

在Collection Framework中,我们有接口List和类AbstractList:

AbstractList implements List
Run Code Online (Sandbox Code Playgroud)

ArrayList扩展AbstractList

implements List
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么ArrayListimplements List条款?

如果,ArrayList extends AbstractList而且AbstractList implements List,我们不能说,那ArrayList implement List

java collections

35
推荐指数
3
解决办法
6221
查看次数

Javassist进行.什么是主要想法和实际使用的地方?

我知道Javassist是一个Java库,它提供了一种操作应用程序Java字节码的方法.

好的,但为什么我们需要操作字节码?

任何真实的例子?任何真正的应用程序,javassist使用?

java bytecode javassist

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

查找字符串中的所有数字

例如,我输入了字符串:" qwerty1qwerty2 ";

作为输出我想[1,2].

我目前的实施如下:

import java.util.ArrayList;
import java.util.List;

public class Test1 {

    public static void main(String[] args) {
        String inputString = args[0];
        String digitStr = "";
        List<Integer> digits = new ArrayList<Integer>();

        for (int i = 0; i < inputString.length(); i++) {
            if (Character.isDigit(inputString.charAt(i))) {
                digitStr += inputString.charAt(i);
            } else {
                if (!digitStr.isEmpty()) {
                    digits.add(Integer.parseInt(digitStr));
                    digitStr = "";
                }
            }
        }
        if (!digitStr.isEmpty()) {
            digits.add(Integer.parseInt(digitStr));
            digitStr = "";
        }

        for (Integer i : digits) {
            System.out.println(i);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java string algorithm

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

System.out.print()不向Eclipse控制台发送任何输出.为什么?

我有下一个java类:

public class Test {

    public static void main(String args[]) {

        for (int i = 0; i < 1448; i++) {
            System.out.print(i);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

当我在Eclipse IDE中运行tis代码时 - 我在Eclipse控制台中看不到任何输出.

但是,如果我更改值1448并设置为例如1447或更少,我在控制台中看到输出(12345678 ...)

那么,也许Eclipse IDE在控制台中对字符串长度有限制?

你怎么看待这件事?

谢谢.

java eclipse string

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

JUnit:在调用每个@Test方法之前的新实例.有什么好处?

目前,我正在阅读"JUnit in action"一书.在本书中,我发现了以下文字:

在调用每个@Test方法之前,JUnit会创建测试类的新实例.这有助于提供测试方法之间的独立性,并避免测试代码中的无意的副作用.因为每个测试方法都在一个新的测试类实例上运行,所以我们不能在测试方法中重用实例变量值.

现在我认为这种方法没有多大意义:

例如:

public class CalculatorTest {
    @Test
    public void testAdd_1() {
        Calculator calculator = new Calculator();
        double result = calculator.add(1, 1);
        assertEquals(2, result, 0);
    }

    @Test
    public void testAdd_2() {
        Calculator calculator = new Calculator();
        double result = calculator.add(2, 2);
        assertEquals(4, result, 0);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于测试类CalculatorTest,没有任何好处.

好吧,让我们去关注另一个例子:

public class OneTest {

    static byte count;

    public OneTest() {
        count++;
    }

    @Test
    public void test1() {
        System.out.println(count);
    }

    @Test
    public void test2() {
        System.out.println(count);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于测试类OneTest,我找到了一种方法来为许多测试方法使用相同的变量计数...

那么,如何看待书中描述的方法的真正好处呢?

java testing junit unit-testing instance

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

使用Spring HibernateTemplate.如何删除ID?

对于使用数据库,我的类扩展了HibernateDaoSupport类,并在我使用Spring的方法内部HibernateTemplate.

因此,为了删除数据库中的一行,我使用以下方法:

public void delete(MyObject obj) {
    getHibernateTemplate().delete(obj);
}
Run Code Online (Sandbox Code Playgroud)

一切都好!

但是,此时我正在尝试实现一个可以删除基于id的行的方法:

public void delete(final long id) {
    // some code here
}
Run Code Online (Sandbox Code Playgroud)

我找不到HibernateTemplate像这样的方法:
getHibernateTemplate().remove(id)

在这种情况下,对我来说什么是好的解决方案?

java spring hibernate

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