有谁知道原因:
public void foo()
{
System.out.println("Hello");
return;
System.out.println("World!");
}
Run Code Online (Sandbox Code Playgroud)
将被报告为Eclipse下的"无法访问的错误",但是
public void foo()
{
System.out.println("Hello");
if(true) return;
System.out.println("World!");
}
Run Code Online (Sandbox Code Playgroud)
只触发"死代码"警告?
我能想到的唯一解释是Java编译器只标记第一个,而Eclipse中的一些额外分析计算出第二个.但是,如果是这种情况,为什么Java编译器不能在编译时弄清楚这种情况呢?
Java编译器不会在编译时弄清楚if(true)没有效果,从而产生基本相同的字节码吗?在什么时候应用可达代码分析?
我想一个更通用的方法来思考这个问题是:"什么时候应用可达代码分析"?在将第二个Java代码片段转换为最终字节码时,我确信在某些时候删除了"if(true)"运行时等效项,并且两个程序的表示变得相同.然后,Java编译器不会再次应用其可访问的代码分析吗?
在Java中,具有"受保护"修饰符的成员不仅可以由同一个类和子类访问,还可以由同一个包中的每个人访问?
我想知道语言设计的原因,而不是实际的应用程序(例如,测试)
对于简单的构造函数和setter ,Java中的参数是否有标准的可接受约定?
(我已经看到了C++的答案,但两个社区的实践经常不同)
假设我有一个带有foo字段的C类.
我经常看到以下三个选项:
public C(Type foo_)
{
foo = foo_;
}
public void setFoo(Type foo_)
{
foo = foo_;
}
Run Code Online (Sandbox Code Playgroud)
public C(Type foo)
{
this.foo = foo;
}
public void setFoo(Type foo)
{
this.foo = foo;
}
Run Code Online (Sandbox Code Playgroud)
public C(Type bar)
{
this.foo = bar;
}
public void setFoo(Type bar)
{
this.foo = bar;
}
Run Code Online (Sandbox Code Playgroud)
我倾向于使用2,但我想知道什么是正确的做法.
我正在研究一个标准的Java系统,它对我的生产者有严格的时序要求(1/100s ms很重要).
我有一个生产者将东西放在一个阻塞队列中,然后一个消费者拿起那些东西并将其转储到一个文件中.消费者在数据不可用时阻止.
显然,阻塞队列是适当的接口,但是如果我想最小化生产者的成本,我应该选择哪种实际实现?当我把东西放进队列时,我想尽可能少地玩锁定和分配等东西,我不介意消费者是否需要等待更长时间或者更努力地工作.
是否有更快的实现,因为我只有一个消费者和单个生产者?
这更像是一个"哲学"论点,但我想知道这里的推荐做法.我没有将它设置为Wiki,以防有"官方"答案.
显然,0px和0em之间没有区别,所以可以简单地指定0并且单位是冗余的(参见0和0em之间的CSS差异).一些回答这个问题的人认为应该总是省略单位.
但是,在我看来,省略该单元更容易出错,因为稍后的更改可能会意外地省略该单元.它与文档中其他地方的非零元素也不太一致.
假设我有一个表单查询
SELECT * FROM MYTABLE WHERE MYCOL in (?)
Run Code Online (Sandbox Code Playgroud)
我想参数化参数.
有没有一种直接的方法在Java中使用JDBC,以一种可以在不修改SQL本身的情况下在多个数据库上工作的方式?
假设您有以下代码:
Connection conn;
try
{
conn = ... // get connection
conn.setAutoCommit(false);
... // Do some modification queries and logic
conn.commit()
} catch(SQLException e)
{
conn.rollback() // Do we need this?
conn.close()
}
Run Code Online (Sandbox Code Playgroud)
在这段代码中,如果有异常,那么关闭连接(因为自动提交已关闭)或显式回滚然后关闭连接是否更好?没有保存点.
我觉得添加回滚调用可能有意义,因为:
1)将来某人可能会添加保存点但忘记添加回滚
2)它提高了可读性
3)它不应该花费任何东西,对吧?
但很明显,这些都不是特别引人注目.任何标准做法?
注意:我知道需要在关闭和回滚时重复try/catch.我实际上有一个中间件,它抽象数据库访问并处理它,但我想知道是否添加它是多余的.
我在C++和Java中的一个令人讨厌的(?)编程习惯是始终在调用或访问成员之前使用this.例如:this.process(this.event).
我的一些学生评论了这一点,我想知道我是否在教习坏习惯.
我的理由是:
显然,这对编译的程序没有任何影响,只是可读性.那么我是否或多或少可读?
注意:因为确实没有正确答案,我把它变成了CW.
我正在使用LaTeX和数字环境.
我对该环境的参数非常熟悉:[htbp],我也普遍熟悉LaTeX默认采用的策略来决定放置每个数字的位置.例如,将数字放在页面的顶部或底部.
我想知道的是,是否有一个包,宏或一些命令,我可以给,如果我有一个单列文档,我主要有一个图形的单个文本引用,这个数字会更多可能被放在参考的同一页面?
例如,假设我有一个长段,中间有一个\ ref {FIG:X}.渲染时,部分段落出现在分页符之前,有些段落出现在分页符之后.我也可以在整段之前和之后的某个地方放置figure命令.有没有办法让它实际放在与实际参考相同的页面中?
我在Python中使用子进程包来运行子进程,我后来需要杀死它.但是,子进程包的文档声明terminate()函数仅在2.6中可用
我们使用2.5运行Linux,出于向后兼容的原因,我无法升级到2.6,有什么替代方案?我猜这些函数是方便的东西.
java ×7
jdbc ×2
c++ ×1
coding-style ×1
collections ×1
concurrency ×1
css ×1
dead-code ×1
eclipse ×1
figures ×1
in-clause ×1
inheritance ×1
latex ×1
naming ×1
protected ×1
python ×1
sql ×1
subprocess ×1