有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在IF语句中定义内部类

我在引用外部类的main方法的IF语句中定义的内部类时遇到问题。这是我的代码:

{pr 1}$

}

如何在main中声明类的新对象并调用方法“f”?另外,代码不好,但已经更改了


共 (1) 个答案

  1. # 1 楼答案

    不能基于方法中的条件定义成员类。但您可以使用委托和lambda或匿名内部类,如下所示:

    public class Outside {
    
    public Function<Object,Object> delegate = arg -> null;
    int IntVar;
    public Outside(int param){
      this.IntVar = param;
    }
    public void Condition() {
        if (IntVar == 0) {
            delegate = (arg) ->{ System.out.println("text"); return null; };
        }
        else IntArg = 5;
    }
    
    public static void main(String[] args) {
        Outside object = new Outside(0);
        object.Condition();
        object.delegate.apply(null);
    }
    }
    

    这段代码需要Java8,但您可以用旧代码来实现,但不太方便。如果你需要更复杂的内部行为。f(),您可能希望用匿名内部类替换lambda。 还要注意的是,外部没有构造函数,方法名也有点乱