当前位置: 首页 > 知识库问答 >
问题:

你能将一个 void 函数传递给类 (Java) 的构造函数吗?[重复]

那绪
2023-03-14

我有一个代表法术的职业< code >法术。在构造函数中,我希望有一个< code>function参数,它是一个void函数,表示咒语的功能;在类中,有一个< code>CastSpell方法,它运行给定的函数。如何给构造函数传递一个void函数,用s.CastSpell执行?

共有1个答案

程智明
2023-03-14

适用于Java 8及以上版本

使用Java 8 lambda表达式,您可以用lambda表达式替换接口参数。

e、 例如,Java已经有这样的接口,称为Runnable

public interface Runnable {
  void run();
}

您还可以根据您的要求使用单个方法创建自己的接口。

例如

public interface MyInterface {
  void execute(Integer arg1, Double arg2);
}

然后您可以传递lambda表达式作为此接口的替代品

public Spell(Runnable task){
    task.run();
}

public void anySpellMethod(MyInterface t){
    t.execute(1,2.0)
}

更多了解请参考官方教程:https://docs . Oracle . com/javase/tutorial/Java/javaOO/lambda expressions . html # approach 6

希望对您有所帮助。

 类似资料:
  • 我正在尝试通过:如果流文件; 在我的主()中,到一个名为“FIFO”的类的构造函数:FIFO(文件); 在FIFO(FIFO.h)的头文件中,我有: 在FIFO.cc,我有: 我一直喜欢(还有更多,我只是粘贴其中一个): 在文件包括从/usr/lib/gcc/x86_64-redhat linux/4.4.7/…/…/…/…/包含/c /4.4.7/bits/localefwd.h: 43,从/u

  • 我试图将构造函数参数动态传递给Springboot框架中的一个bean。我已经使用context.getBean(class,arg...)在Spring中动态传递构造函数参数,但它没有成功获取值并显示默认值。我的代码有什么问题? 项目结构: 应用程序上下文.xml 应用 活动 输出:

  • 我为什么要这样做?因为lambda表达式生成的ClosureType不是默认可构造的。通过这个“技巧”,我可以默认构造这样的closureType。 此外,模板参数的要求是,它必须为空=>

  • 问题内容: 我的工厂如下 这是Foo的定义: 好。我不确定如何使用Guice将此参数传递给Foo构造函数? 有任何想法吗? 问题答案: 所有“ Guice构造函数参数”答案在某种程度上似乎都不完整。这是一个完整的解决方案,包括用法: //在实现类上注释构造函数和辅助参数 //使用仅接受辅助参数的create()方法创建工厂接口。 // FooFactory接口没有显式的实现类(Guice Magi

  • 我创建了一个Author对象,用于构造函数的方法签名:public Book但是,我所做的赋值要求将Author(实例变量)更改为。当然,现在我以前的构造函数不行了。这是密码 如果我上传的方式不令人满意,我对任何不便表示歉意。我还没有学会使用堆栈溢出。 谢谢!

  • 我试图使一个用户类和使用类来处理登录,但从某种原因我的用户类构造函数是读取我的mysqli对象作为一个字符串 这是我的密码 Class.php mysql.php checklogin.php 它给了我这个错误 可捕获的致命错误:在第13行的C:\wamp\www\class.php中,类mysqli的对象无法转换为字符串 我要把头发拔出来了,有什么想法吗?