小编emk*_*a86的帖子

后增量运算符不在for循环中递增

我正在做一些关于Java的研究,发现这很令人困惑:

for (int i = 0; i < 10; i = i++) {
  System.err.print("hoo... ");
}
Run Code Online (Sandbox Code Playgroud)

这是永无止境的循环!

任何人都有很好的解释为何会发生这样的事情

java loops for-loop infinite-loop post-increment

21
推荐指数
2
解决办法
2066
查看次数

Kotlin 中的 XOR 运算符是功能还是错误?

我做 Java 开发人员已经很多年了,最近我在 Kotlin 中发现了一些非常令人惊讶的东西。在 Java 中有一个很少使用的逻辑运算符^ XOR,但有时它很有用。例如:您可以轻松检查两个数字中是否只有一个大于零。

使用&& AND运算符和一些变量ab它看起来像这样:

boolean valid = (a > 0 && b <= 0) || (a <= 0 && b > 0);
Run Code Online (Sandbox Code Playgroud)

但它可以通过^ XOR轻松实现:

boolean valid = a > 0 ^ b > 0;
Run Code Online (Sandbox Code Playgroud)

现在,在 Kotline 中,我们不用^XOR,xor在 Kotlin 中只是相同的代码如下所示:

val valid = a > 0 xor b > 0;
Run Code Online (Sandbox Code Playgroud)

这里出现了一个问题,因为 Kotline 中的这段代码给出了……编译错误!!为什么?因为在 Java 中,所有逻辑运算符 ( &,&&,|,||,^ …

java xor operator-precedence logical-operators kotlin

10
推荐指数
1
解决办法
1075
查看次数

带<?>或不带<?>的泛型实例

我对Java和instanceof运算符中的泛型有疑问.

做这样的检查实例是不可能的:

if (arg instanceof List<Integer>)  // immposible due to
                                   // loosing parameter at runtime
Run Code Online (Sandbox Code Playgroud)

但是可以运行这个:

if (arg instanceof List<?>)
Run Code Online (Sandbox Code Playgroud)


现在我的问题 - arg instanceof List 之间有什么区别arg instanceof List<?>吗?

java generics instanceof

7
推荐指数
1
解决办法
427
查看次数

使用<T>进行通用方法调用

我在理解这种泛型方法调用时遇到问题:

object = ObjectGenerator.<T> getObject(objectName);
Run Code Online (Sandbox Code Playgroud)

以下是上述情况的背景:

class GenClass<T> {

   private T object;

   // ... some code

   public void initObject(String objectName) {
      object = ObjectGenerator.<T> getObject(objectName);
   }
}

class ObjectGenerator {

   public static <T extends Object> T getObject(String name) {
      // some code
      return someObject;
   }
}
Run Code Online (Sandbox Code Playgroud)

问题是<T>getObject(objectName)调用之前扮演什么角色?

java generics jls

7
推荐指数
1
解决办法
694
查看次数