我有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从.xlsm文件中获取特定单元格的值.. ?? 我想通过指定特定的行和列来获取单元格值,例如我需要第1行和第C1列或第5行和第C6列的单元格值...我通过指定行和列号来获取值,如下所示
XSSFRow row = sheet.getRow(4); // 4是行号
cell = row.getCell(4); // 4是列号
但是只有当工作表有从A,B,C,D开始的列时......这样才有效......当我尝试使用相同的编码来获取另一张工作表但它不起作用时...在此工作表中,列从C,D,E开始......等等
任何人都可以帮助我了解我可以使用什么来获得指定的结果?
我正在编写一些代码用于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)
任何有关如何防止这种情况的帮助将不胜感激.
在JBoss 7中处理servlet请求时,我需要获取当前的node名称和cluster名称,我该如何获取它?
我有一个包含三个对象的列表,假设将其命名为数据。
我有一个方法,它有两个参数,一个是starttime,另一个是endtime。我的要求是,如果输入值位于第一个对象之间,则此方法将返回第一个对象。如果输入值位于前两个对象之间,则该方法应返回前两个对象。我怎样才能做到这一点。谁能告诉我吗?
对不起,如果我的标题有点混乱。
我的程序正在执行一些网络抓取,因此会由于随机网络条件而捕获一些 SocketTimeoutException。现在,当 SocketTimeoutException 被捕获时,该特定循环将被跳过,因此我会错过一些数据。我确信当跳过循环中的代码再次运行时,一切都会好起来的。由于我正在抓取大量数据(> 100 万组数字),我不想记录异常循环并再次手动运行它们。捕获异常时有没有办法再次运行相同的循环?
try{
for(){
someCode
...
}
}catch(IOException){
}
Run Code Online (Sandbox Code Playgroud)