小编Nic*_*ick的帖子

有没有办法给一个函数两个随机参数,并使它们相同?

假设我想调用一个内置函数(意味着我不能改变它):

foo(int x,  int y)
Run Code Online (Sandbox Code Playgroud)

我希望 x 和 y 的参数是随机的,但是是相同的随机数。我知道我可以做到这一点

double rand = Math.random();
foo(rand, rand);
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法在一行中做到这一点,而无需声明单独的变量?如

foo(Math.random(), Math.random());
Run Code Online (Sandbox Code Playgroud)

但让它们相同。只是好奇是否有一种简单的方法可以做到这一点,我不知道可以避免添加额外的行。也许我可以输入到第二个参数中,基本上告诉它“使它与第一个参数相同”?任何帮助是极大的赞赏。

java

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

与方法变量相比,lambda 表达式有什么优势?

我对 lambda 表达式很陌生,所以请耐心等待。假设我有一个带有单个抽象函数的接口:

public interface IAbsFunc {
    public abstract void absFunc(int x);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以将 lambda 表达式存储在变量中:

public class Lambda {
    public static void main(String[] args) {
        IAbsFunc obj = (int x) -> System.out.println(x);
        obj.absFunc(3);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,这就像将方法存储在变量中。但是,这已经可以通过 java.lang.reflect 完成:

public class Lambda {
    public static void main(String[] args) throws Exception {
        Method obj = PrintStream.class.getDeclaredMethod("println", int.class);
        obj.invoke(System.out, 3);
    }
}
Run Code Online (Sandbox Code Playgroud)

显然我在这里遗漏了一些东西。在什么情况下 lambda 表达式更可取?

java reflection lambda

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

有没有办法在使用三元运算符的 return 语句中抛出异常?

我有一个在某些情况下返回 null 的函数,例如:

public Class Foo {
    public static Double bar(double a, double b) {
        if (a == 0 || b == 0) return null;
        return a + b;
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我想创建另一个函数,它执行完全相同的操作,只是在满足该条件时抛出错误而不是返回 null。我尝试这样做:

public Class Foo {

    public static Double bar(double a, double b) {
        if (a == 0 || b == 0) return null;
        return a + b;
    }

    public static Double barWithException(double a, double b) {
        return bar(a, b) == null ? throw new IllegalArgumentException() : bar(a, b); …
Run Code Online (Sandbox Code Playgroud)

java return conditional-operator

0
推荐指数
1
解决办法
158
查看次数

标签 统计

java ×3

conditional-operator ×1

lambda ×1

reflection ×1

return ×1