小编Uri*_*Uri的帖子

Eclipse中Java中无法访问代码错误与死代码警告?

有谁知道原因:

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 eclipse dead-code unreachable-code

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

为什么Java中的"protected"修饰符允许访问同一个包中的其他类?

在Java中,具有"受保护"修饰符的成员不仅可以由同一个类和子类访问,还可以由同一个包中的每个人访问?

我想知道语言设计的原因,而不是实际的应用程序(例如,测试)

java inheritance protected

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

Java构造函数和简单setter中参数命名的最佳实践

对于简单的构造函数和setter ,Java中的参数是否有标准的可接受约定?

(我已经看到了C++的答案,但两个社区的实践经常不同)

假设我有一个带有foo字段的C类.

我经常看到以下三个选项:

1)使用带有下划线的实际字段名称:

public C(Type foo_)
{
   foo = foo_;
}

public void setFoo(Type foo_)
{
   foo = foo_;
}
Run Code Online (Sandbox Code Playgroud)

2)使用实际的字段名称,只需在设置中使用"this":

public C(Type foo)
{
   this.foo = foo;
}
public void setFoo(Type foo)
{
   this.foo = foo;
}
Run Code Online (Sandbox Code Playgroud)

3)完全不一致的事情,如:

public C(Type bar)
{
   this.foo = bar;
}
public void setFoo(Type bar)
{
   this.foo = bar;
}
Run Code Online (Sandbox Code Playgroud)

我倾向于使用2,但我想知道什么是正确的做法.

java naming

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

对于单生产者单一消费者方案,哪种Java阻塞队列最有效

我正在研究一个标准的Java系统,它对我的​​生产者有严格的时序要求(1/100s ms很重要).

我有一个生产者将东西放在一个阻塞队列中,然后一个消费者拿起那些东西并将其转储到一个文件中.消费者在数据不可用时阻止.

显然,阻塞队列是适当的接口,但是如果我想最小化生产者的成本,我应该选择哪种实际实现?当我把东西放进队列时,我想尽可能少地玩锁定和分配等东西,我不介意消费者是否需要等待更长时间或者更努力地工作.

是否有更快的实现,因为我只有一个消费者和单个生产者?

java collections concurrency

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

在CSS中指定0值时,我应该明确标记单位还是省略?

这更像是一个"哲学"论点,但我想知道这里的推荐做法.我没有将它设置为Wiki,以防有"官方"答案.

显然,0px和0em之间没有区别,所以可以简单地指定0并且单位是冗余的(参见0和0em之间的CSS差异).一些回答这个问题的人认为应该总是省略单位.

但是,在我看来,省略该单元更容易出错,因为稍后的更改可能会意外地省略该单元.它与文档中其他地方的非零元素也不太一致.

css units-of-measurement

38
推荐指数
3
解决办法
6917
查看次数

使用JDBC参数化IN子句的最佳方法是什么?

假设我有一个表单查询

SELECT * FROM MYTABLE WHERE MYCOL in (?)
Run Code Online (Sandbox Code Playgroud)

我想参数化参数.

有没有一种直接的方法在Java中使用JDBC,以一种可以在不修改SQL本身的情况下在多个数据库上工作的方式?

我发现的最接近的问题与C#有关,我想知道Java/JDBC是否有不同之处.

java sql jdbc in-clause

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

在JDBC中,当autocommit为false并且没有设置显式保存点时,它是好的样式还是浪费回滚?

假设您有以下代码:

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.我实际上有一个中间件,它抽象数据库访问并处理它,但我想知道是否添加它是多余的.

java jdbc

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

正在写"这个".在实例变量和方法的好坏之前?

我在C++和Java中的一个令人讨厌的(?)编程习惯是始终在调用或访问成员之前使用this.例如:this.process(this.event).

我的一些学生评论了这一点,我想知道我是否在教习坏习惯.

我的理由是:

  1. 使代码更具可读性 - 更容易区分字段和局部变量.
  2. 使标准调用与静态调用(尤其是Java)区分开来更容易
  3. 让我记住,这个调用(除非目标是最终的)可能最终会出现在另一个目标上,例如在子类中的覆盖版本中.

显然,这对编译的程序没有任何影响,只是可读性.那么我是否或多或少可读?

注意:因为确实没有正确答案,我把它变成了CW.

c++ java coding-style

35
推荐指数
7
解决办法
4108
查看次数

有没有办法让LaTeX将数字放在同一页面作为对该数字的引用?

我正在使用LaTeX和数字环境.

我对该环境的参数非常熟悉:[htbp],我也普遍熟悉LaTeX默认采用的策略来决定放置每个数字的位置.例如,将数字放在页面的顶部或底部.

我想知道的是,是否有一个包,宏或一些命令,我​​可以给,如果我有一个单列文档,我主要有一个图形的单个文本引用,这个数字会更多可能被放在参考的同一页面?

例如,假设我有一个长段,中间有一个\ ref {FIG:X}.渲染时,部分段落出现在分页符之前,有些段落出现在分页符之后.我也可以在整段之前和之后的某个地方放置figure命令.有没有办法让它实际放在与实际参考相同的页面中?

latex figures

34
推荐指数
3
解决办法
10万
查看次数

在Python 2.5中,如何杀死子进程?

我在Python中使用子进程包来运行子进程,我后来需要杀死它.但是,子进程包的文档声明terminate()函数仅在2.6中可用

我们使用2.5运行Linux,出于向后兼容的原因,我无法升级到2.6,有什么替代方案?我猜这些函数是方便的东西.

python subprocess

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