相关疑难解决方法(0)

Java 7中的钻石运算符有什么意义?

java 7中的菱形运算符允许以下代码:

List<String> list = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)

但是在Java 5/6中,我可以简单地写:

List<String> list = new LinkedList();
Run Code Online (Sandbox Code Playgroud)

我对类型擦除的理解是这些完全相同.(无论如何,通用都会在运行时删除).

为什么要钻石头呢?它允许哪些新功能/类型安全?如果它没有产生任何新功能,为什么他们将其作为功能提及?我对这个概念的理解是否有缺陷?

java generics diamond-operator java-7

438
推荐指数
5
解决办法
14万
查看次数

静态/动态与强/弱

我看到这些术语在编程中遍布各地,我对它们的含义有一个模糊的概念.搜索显示,事实上,这些事情已被问到堆栈溢出.据我所知,语言中的静态/动态类型与强/弱类型略有不同,但这种差异是我的意思.不同的来源似乎使用不同的含义甚至可以互换地使用这些术语.我找不到谈论两者的地方,实际上说明了差异.如果有人能够在这里为我和世界其他地方清楚地说明这一点,那会更好.

terminology static-typing weak-typing strong-typing dynamic-typing

303
推荐指数
9
解决办法
6万
查看次数

什么类型的令牌恰好是Java 10中的"var"?

在最后一期Heinz Kabutz的时事通讯#255 Java 10:推断的局部变量中,显示它var不是Java 10中的保留字,因为您也可以使用它var作为标识符:

public class Java10 {
    var var = 42; // <-- this works
}
Run Code Online (Sandbox Code Playgroud)

但是,您不能使用ie assert作为标识符var assert = 2,因为它assert是一个保留字.

正如在链接的时事通讯中所说的那样,var不是保留字的事实是好消息,因为这允许来自Java的先前版本的代码var用作标识符在Java 10中编译而没有问题.

那么,那是什么var?它既不是显式类型也不是语言的保留字,因此它被允许作为标识符,但是当它用于在Java 10中声明局部变量时它确实具有特殊含义.我们究竟在一个上下文中调用它局部变量声明?

此外,除了支持向后兼容性(通过允许包含var作为标识符的旧代码进行编译),还有其他优点是var 不是保留字吗?

java java-10

18
推荐指数
2
解决办法
1264
查看次数

Java 检查数值是否为 short、long 或 int

是否可以检查 Java 11 中数值的原始类型?

假设我有一个方法

@Test
public void test1(){
 short x = 10;
 short y = 3;
 var z = x * y // z is of int type
}

@Test
public void test1(){
 short x = 10;
 short y = 3;
 var z = (short)x * y // z is of int type as variables are promoted
}

@Test
public void test3(){
 short x = 10;
 short y = 3;
 var z = (short)x * (short)y // is z …
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
1
解决办法
63
查看次数