gpt4 book ai didi

java - 如何在没有 .Method() 的情况下调用功能接口(interface)中的方法

转载 作者:行者123 更新时间:2023-12-01 11:06:45 27 4
gpt4 key购买 nike

public class Main {
public static void main(String[] args) {
MyFunctionalInterface_1 F;
MyFunctionalInterface_2 G;
F = X::Method;
int i = F.Method(5);
System.out.println(i);
G = new X()::Method;
G.Method();
}
}

class X{
public static int Method(double x){
return (int)(x*x*x);
}

public void Method(){
System.out.println("Huy sosi");
}
}

@FunctionalInterface
interface MyFunctionalInterface_1{
int Method(double x);
}

@FunctionalInterface
interface MyFunctionalInterface_2{
void Method();
}

如何将函数称为 F()G() ?

我在做考试题(从俄语翻译):

Write an entity declaration F, G and X in Java so that the following code fragment compiles without errors

"F = X::Method; int i = F(0.0); G = new X()::Method; G();"


我不知道我怎么能这样称呼他们。 () 和 (0.0)
或者也许我应该使用不同的东西,而不仅仅是功能接口(interface)。
我不是java专家。你能帮助我吗?

最佳答案

可能是这样,利用 meaning of a name 周围的规则:

static int F(double d) {
return 0;
}

static void G() {}

static class X {
void method();
}

public static void main(String[] args) {
Consumer<X> F;
Runnable G;

F = X::Method; int i = F(0.0); G = new X()::Method; G();
}

请注意 F(0.0)没有调用消费者, G()没有运行可运行文件。但是,这确实符合“编译无误”的标准。

经过一番思考,我想出了一种方法来定义它,以便方法调用与函数方法一样:
class X {
static int F(double x) {
return 0;
}

static int Method(double x) {
return F(x);
}

static void G() {}

void Method() {
G();
}

public static void main(String[] args) {
DoubleToIntFunction F;
Runnable G;

F = X::Method; int i = F(0.0); G = new X()::Method; G();
}
}

真是一团糟。

关于java - 如何在没有 .Method() 的情况下调用功能接口(interface)中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59643967/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com