小编Avi*_*gal的帖子

静态初始化程序在构造函数之后运行,为什么?

我有2个班:

A类:

public class A {
    static B b = new B();

     static {
         System.out.println("A static block");
     }

     public A() {
         System.out.println("A constructor");
     }
}
Run Code Online (Sandbox Code Playgroud)

B级:

public class B {
     static {
         System.out.println("B static block");
         new A();
     }

     public B() {
         System.out.println("B constructor");
     }
}
Run Code Online (Sandbox Code Playgroud)

我创建一个Main类,它只创建新的A:

public class Main {
    public static void main(String[] args) {
        new A();
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

B static block
A constructor
B constructor
A static block
A constructor
Run Code Online (Sandbox Code Playgroud)

如您所见,A的构造函数在其静态初始化程序之前被调用.

我理解它与我创建的循环依赖有关,但我的印象是静态初始化器应该始终在构造函数之前运行.

发生这种情况的原因是什么(技术上在java实现中)?

是否建议一起避免静态初始化器?

java constructor static-initialization

24
推荐指数
1
解决办法
3172
查看次数

如何使用JAVA获取Excel工作表中指定位置的单元格值

如何使用java从.xlsm文件中获取特定单元格的值.. ?? 我想通过指定特定的行和列来获取单元格值,例如我需要第1行和第C1列或第5行和第C6列的单元格值...我通过指定行和列号来获取值,如下所示

XSSFRow row = sheet.getRow(4); // 4是行号

cell = row.getCell(4); // 4是列号

但是只有当工作表有从A,B,C,D开始的列时......这样才有效......当我尝试使用相同的编码来获取另一张工作表但它不起作用时...在此工作表中,列从C,D,E开始......等等

任何人都可以帮助我了解我可以使用什么来获得指定的结果?

java apache excel apache-poi xlsm

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

浮点返回指数表示法

我正在编写一些代码用于Xpath查询,这会导致问题.我正在尝试从列表中读取随机名称,但float(x)偶尔会返回指数表示法.

Random r = new Random();
float x = r.nextFloat();

final String expression = "(/list/name[@minLevel<=" + minLevel + "])" +
    "[(" + x + " * count(/list/name[@minLevel<=" + minLevel + "])) +1]";
Run Code Online (Sandbox Code Playgroud)

每隔一段时间,表达式就等于:

(/name/list[@minLevel<=11])[(5.478859E-4 * count(/name/list[@minLevel<=11])) +1]
Run Code Online (Sandbox Code Playgroud)

显然xpath没有用指数表示法做数学,因为我得到这个错误:

javax.xml.transform.TransformerException: 5.478859E-4 could not be formatted to a number!
Run Code Online (Sandbox Code Playgroud)

任何有关如何防止这种情况的帮助将不胜感激.

java xpath

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

如何在JBoss中获取当前的`node`名称和`cluster`名称?

在JBoss 7中处理servlet请求时,我需要获取当前的node名称和cluster名称,我该如何获取它?

java-ee jboss7.x

3
推荐指数
1
解决办法
3781
查看次数

如何按值存储间隔和查找间隔?

我有一个包含三个对象的列表,假设将其命名为数据。

  1. 数据[0]有0-6
  2. 数据[1]有6-13
  3. 数据[2]有13-23

我有一个方法,它有两个参数,一个是starttime,另一个是endtime。我的要求是,如果输入值位于第一个对象之间,则此方法将返回第一个对象。如果输入值位于前两个对象之间,则该方法应返回前两个对象。我怎样才能做到这一点。谁能告诉我吗?

java

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

当捕获异常而不是继续时,是否可以在循环中再次迭代?

对不起,如果我的标题有点混乱。

我的程序正在执行一些网络抓取,因此会由于随机网络条件而捕获一些 SocketTimeoutException。现在,当 SocketTimeoutException 被捕获时,该特定循环将被跳过,因此我会错过一些数据。我确信当跳过循环中的代码再次运行时,一切都会好起来的。由于我正在抓取大量数据(> 100 万组数字),我不想记录异常循环并再次手动运行它们。捕获异常时有没有办法再次运行相同的循环?

try{
    for(){
        someCode
        ...
    }
}catch(IOException){
}
Run Code Online (Sandbox Code Playgroud)

java iteration loops exception try-catch

0
推荐指数
1
解决办法
1674
查看次数