java不能对什么类型进行转换_什么是“不兼容类型:void不能转换为…”?刻薄?...

快速回答

编译器告诉您正在尝试使用不返回结果的方法的“结果”。

解决办法:读取要调用的方法的javadoc(如果没有javadocs,则读取源代码)。

从javadocs/源代码中可以看出如何使用该方法。

将代码更正为不使用(不存在)结果,或使用不同的方法。或者,更改要调用的方法以返回值。

详细实例

考虑这个例子:public class Test {

private static void add(int a, int b) {

int res = a + b;

}

public static void main(String[] args) {

int sum = add(1, 1);

}}

当我使用javac(Java 8),我得到以下编译错误。$ javac Test.java

Test.java:7: error: incompatible types: void cannot be converted to int

int sum = add(1, 1);

^1 error

编译错误实际上告诉我们一些事情:编译器检出中指示行上的指定位置的问题。main方法。问题的根本原因不一定在这条线上,但这正是编译器发现的原因。某物是错的。

这是一个类型错误,因此出现了“不兼容类型”短语。

不兼容涉及两种类型:

void和

int.

编译器

认为代码需要从

void到

int..这是不可能的。

那这是什么void类型?

那么,您很可能已经了解到Java支持两种类型:原始类型和引用类型。这个void类型是不是这些..“类型”意味着“没有价值”。(如果您认为类型是值的集合,那么void是空集。)

类的主要用途。void在方法声明中使用类型。请看add以上方法。注意我们已经声明add签名:private static void add(int a, int b)

该签名表明add方法取2int方法和返回void..这意味着该方法将不返回任何内容。

但是.。我们这样称呼它:int sum = add(1, 1);

这是在期待add呼叫返回int我们将分配给sum.

这就是“无效不能分配给.”错误信息真的手段。编译器告诉我们,代码试图使用已声明为不返回结果的方法的结果。那是不可能的。Java语言不允许您“从空气中提取值”来使用。

可能有两种方法可以消除编译错误:我们可以更改该方法的声明,以便它确实返回一个值。例如:private static int add(int a, int b) {

int res = a + b;

return res;}

我们可以更改调用站点,这样它就不会尝试使用(不存在)返回值。例如:add(1, 1);

在本例中,这两种方法都可以做到这一点。但是只有一种方法(第一种)使代码工作。按原计划.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值