小编Blo*_*ura的帖子

Java的Windows 10"os.name"?

在Java中,我们可以看到os.name知道底层操作系统名称的属性值:System.getProperty("os.name").

对于每个版本的Windows,它总是返回操作系统的确切名称:Windows XPXP,Windows VistaVista,Windows 7Seven,Windows 8.18.1等等......

问题是:我刚刚使用发布的Microsoft更新程序将Windows 8.1更新到Windows 10,看起来这个属性仍然存在Windows 8.1:

public class OSTest {
  public static void main(String[] args) {
    System.out.println(System.getProperty("os.name"));
  }
}
Run Code Online (Sandbox Code Playgroud)

如何为此创建解决方法?而且,有人知道如果安装一个新的Windows 10副本这个问题是否仍然存在 - 也就是说,这个错误是由Microsoft自动更新程序引起的?

java operating-system jvm getproperty windows-10

49
推荐指数
2
解决办法
4万
查看次数

获取数字的最快数字方式?

我已经检测到一个数字的位数.例如,3295866数字.

我所做的,只是将数字解析为字符串,并获取字符串长度,如:

number.toString().length()
Run Code Online (Sandbox Code Playgroud)

但是,有一种最快的方法来计算数字上的数字吗?我必须多次使用这种方法,所以我认为使用toString()会影响性能.

谢谢.

java string math int numbers

11
推荐指数
2
解决办法
9万
查看次数

匿名类字段访问Java 1.8与旧版本的兼容性

在Java 1.8上,您不必定义一个字段,因为final它可以从匿名类中获取.

例如,在旧版本上:

public void foo(final int bar) {
  new Runnable() {
    public void run() {
      System.out.println(bar);
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

但是,现在,在Java 1.8上,bar不需要是最终的:

public void foo(int bar) {
  new Runnable() {
    public void run() {
      System.out.println(bar);
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我编译我的项目,并且我正在使用的Java 1.8上实现的唯一资源就是这个(我没有使用任何lambdas,新类等),我的代码是否可以在具有较旧Java版本的计算机上执行?如果没有,为什么?

java final anonymous-class java-8

5
推荐指数
1
解决办法
674
查看次数

Kotlin编译器的类型推断无法选择调用哪个方法(泛型类型的歧义)

因此,我有一些带有这些签名的 Java 方法(为了简单起见,删除了注释和代码体):

public class JavaClass {
  public static <E extends CharSequence> E join(E... array) { ... }
  public static <E extends CharSequence> E join(CharSequence separator, E... array) { ... }
}
Run Code Online (Sandbox Code Playgroud)

我在 Kotlin 中有一些代码,它调用“join”方法:

class KtClass {
    fun test(vararg array: String) {
        JavaClass.join(*array)
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好; 它将传播可变参数并调用以前的方法签名。好的!

例如,如果我想使用“分隔符”参数调用后一个方法签名,就会出现问题:

class KtClass {
    fun test(vararg array: String) {
        JavaClass.join("<br>", *array)
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码无法编译。编译器无法决定调用哪个方法。错误:

错误:(5, 13) Kotlin:在未完成类型推断的情况下无法在以下候选者中进行选择:public open fun join(vararg array: String!): String!在 JavaClass 中定义 public open fun join(separator: CharSequence!, vararg array: …

generics overloading kotlin kotlin-interop

5
推荐指数
1
解决办法
5323
查看次数