小编c.P*_*.u1的帖子

在非void方法中缺少return语句编译

我遇到一种情况,其中一个非void方法缺少一个return语句,代码仍然编译.我知道while循环之后的语句是无法访问的(死代码),永远不会被执行.但为什么编译器甚至不警告返回什么?或者为什么一种语言允许我们使用无效循环且不返回任何内容的非void方法?

public int doNotReturnAnything() {
    while(true) {
        //do something
    }
    //no return statement
}
Run Code Online (Sandbox Code Playgroud)

如果我在while循环中添加break语句(甚至是条件语句),编译器会抱怨臭名昭着的错误:Method does not return a value在Eclipse和Not all code paths return a valueVisual Studio中.

public int doNotReturnAnything() {
    while(true) {
        if(mustReturn) break;
        //do something
    }
    //no return statement
}
Run Code Online (Sandbox Code Playgroud)

Java和C#都是如此.

c# java oop

189
推荐指数
9
解决办法
9184
查看次数

在类中实现超级和子接口(类A实现SuperInterface,SubInterface)

interface A {

    public void doSomething();
}

interface B extends A {

    public void doSomethingElse();
}

public class AClass implements A, B {

    public void doSomething() {}

    public void doSomethingElse() {}

}
Run Code Online (Sandbox Code Playgroud)

为什么Java允许这样的声明?通过实现SubInterface(B)可以实现同样的事情,实现两个接口的用途是什么?

java interface

14
推荐指数
1
解决办法
3790
查看次数

标签 统计

java ×2

c# ×1

interface ×1

oop ×1