java在IF语句中定义内部类 9 月,2 周 Questions & Answers 2621 我在引用外部类的main方法的IF语句中定义的内部类时遇到问题。这是我的代码: {pr 1}$ } 如何在main中声明类的新对象并调用方法“f”?另外,代码不好,但已经更改了
# 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。 还要注意的是,外部没有构造函数,方法名也有点乱
# 1 楼答案
不能基于方法中的条件定义成员类。但您可以使用委托和lambda或匿名内部类,如下所示:
这段代码需要Java8,但您可以用旧代码来实现,但不太方便。如果你需要更复杂的内部行为。f(),您可能希望用匿名内部类替换lambda。 还要注意的是,外部没有构造函数,方法名也有点乱