按长度排序字符串的ArrayList

我想按长度订购字符串的ArrayList,但不仅仅是按数字顺序。 比如说,列表包含以下单词: cucumber aeronomical bacon tea telescopic fantasmagorical 它们需要按长度差异排序为特殊字符串,例如: intelligent 所以最终的列表看起来像这样(括号中的差异): aeronomical (0) telescopic (1) fantasmagorical (3) – give priority to positive differences? doesn’t really matter cucumber (3) bacon (6) tea (8)

比较KeyListeners和Key Bindings之间的function

这个问题出现在一个匿名用户低估了我的一个涉及KeyListeners的答案并建议使用Key Bindings时。 这位匿名用户告诉我,KeyListener接口是一个旧的AWT解决方案,不应该使用。 但是,我不知道我是否应该完全相信这些信息。 我已经在各种网站上进行了研究,包括oracle,并且没有发现关于KeyListeners或Key Bindings的function。 我知道这两个人执行类似的任务这一事实,但我不确定“幕后”到底发生了什么,可以这么说。 我倾向于在未来的项目中使用Key Bindings,仅仅是因为我获得的研究表明KeyListener接口要求相关组件具有焦点而Key Bindings没有。 但是,我很困惑。 为什么会这样? Key Bindings的触发方式与KeyListeners的触发方式有何不同? PS我很确定这很罕见,但在某些情况下使用KeyListeners更合适吗?

为什么Java中没有本地静态变量?

在C / C ++中,我们使用静态局部变量来维护方法的状态。 但是为什么Java不支持它? 是的,我可以为此目的使用静态字段。 但创建一个只保留一个方法状态的字段是不是有点奇怪?

在Scala中实现具有原始类型的方法

我在Scala中使用Drools Planner(用Java编写)时遇到了问题。 Drools规划器中的一个接口声明为: public interface Score extends Comparable 但是另一个界面使用’Score’作为原始类型: public interface Solution { Score getScore(); 然后我想在Scala中实现这个接口: class MySolution extends Solution { def getScore: Score = … 我收到编译错误:Scala编译器不允许编写’def getScore:Score’。 当我尝试添加’Score [_]’或’Score [whatever]’编译器抱怨类型不兼容时。 我该怎么办?

CDI缺少@ViewScoped和@FlashScoped

为什么Java EE 6 CDI缺少@ViewScoped和@FlashScoped注释? (特别是前者让我很奇怪,因为CDI源于Seam世界,它已经知道了非常相似的ScopeType.PAGE …) 使用CDI时建议的解决方法是什么? 使用Seam 3? 谢谢

使用null对象引用调用静态方法时会发生什么?

public class CallingStaticMethod { public static void method() { System.out.println(“I am in method”); } public static void main(String[] args) { CallingStaticMethod csm = null; csm.method(); } } 有人可以解释如何在上面的代码中调用静态方法吗?

迭代可变长度的Java数组

如何迭代可变长度的Java数组。 我想我会设置一个while循环,但是如何检测到我已到达数组的末尾。 我想我想要这样的东西[只需要弄清楚如何表示myArray.notEndofArray()] index = 0; while(myArray.notEndofArray()){ system.out.println(myArray(index)); index++; }

在Java中的Rethrowexception

关于在Java中重新抛出exception,我有一个非常简单的问题。 这是代码片段: public static void main(String[] args) throws FileNotFoundException { try { FileReader reader = new FileReader(“java.pdf”); } catch (FileNotFoundException ex) { throw ex; } } public static void main(String[] args) throws FileNotFoundException { FileReader reader = new FileReader(“java.pdf”); } 为什么我们需要在第一个版本中重新抛出ex ,而第二个版本看起来更优雅? 什么可能是好处,哪个版本比另一个更受欢迎?

用鼠标拖动创建矩形,而不是绘制

我想用整个屏幕创建一个矩形。 通过使用整个屏幕,我的意思是这样的: 首先,是否可以在Java中使用整个屏幕? 第二,我该怎么做呢? 另一件事,我不想绘制一个实际的矩形,我想创建on,就像在新的java.awt.Rectangle 。

Java:私有内部类合成构造函数

我有一个Outer类,有一个private Inner类。 在我的Outer类方法中,我实例化Inner类,如下所示: Outer outer = new Outer(); Inner inner = outer.new Inner(); 编译器将此代码转换为: Outer outer = new Outer(); Inner inner = new Inner(outer, null); 使用reflection显示Inner类具有以下合成构造函数: private Outer$Inner(Outer) Outer$Inner(Outer,Outer$Inner) 由于Inner类是private ,编译器会将private构造函数添加到它,因此没有人可以实例化该类。 但显然Outer类应该能够实例化它,因此编译器会添加其他包私有构造函数,后者又调用私有构造函数。 此外,由于package-private构造函数在其名称中包含$ ,因此普通Java代码无法调用它。 问题:为什么要合成一个私有和一个包私有构造函数? 为什么不合成package-private构造函数并用它完成呢?