相关疑难解决方法(0)

如何在Java中将函数作为参数传递?

是否可以将方法作为参数传递给Java方法?如果是这样,有人可以指导我吗?这似乎并不重要

java

395
推荐指数
6
解决办法
50万
查看次数

什么是Java中函数指针的最接近的替代品?

我有一个大约十行代码的方法.我想创建更多完全相同的方法,除了一个会改变一行代码的小计算.这是传递函数指针以替换该行的完美应用程序,但Java没有函数指针.什么是我最好的选择?

java closures function-pointers

299
推荐指数
12
解决办法
9万
查看次数

Java,仅列出目录中的子目录,而不是文件

在Java中,如何仅列出目录中的子目录?

我想使用java.io.File功能,Java中最好的方法是什么?

java file

92
推荐指数
4
解决办法
15万
查看次数

为什么这个方法引用赋值编译?

我很难理解为什么以下代码编译:

public class MethodRefs {

    public static void main(String[] args) {
        Function<MethodRefs, String> f;

        f = MethodRefs::getValueStatic;

        f = MethodRefs::getValue;
    }

    public static String getValueStatic(MethodRefs smt) {
        return smt.getValue();
    }

    public String getValue() {
        return "4";
    }

}
Run Code Online (Sandbox Code Playgroud)

我可以看到为什么第一个赋值是有效的 - getValueStatic显然匹配指定的Function类型(它接受一个MethodRefs对象并返回一个String),但第二个让我感到困惑 - 该getValue方法不接受任何参数,那么为什么它仍然有效分配给它f

java java-8

44
推荐指数
5
解决办法
2461
查看次数

在Java语法中::的含义

以下代码中::的含义是什么?

Set<String> set = people.stream()
                        .map(Person::getName)
                        .collect(Collectors.toCollection(TreeSet::new));
Run Code Online (Sandbox Code Playgroud)

java syntax java-8

25
推荐指数
3
解决办法
2万
查看次数

compareTo和compare如何工作?

我知道比较并compareTo返回一个int值.

例如:

Returns
0 if a equal b
-1 if a < b
+1 if a > b
Run Code Online (Sandbox Code Playgroud)

sort方法调用其中一个compareTocompare()方法.但是sort方法如何安排list比较或compareTo返回int值.什么是在a comparecompareTo返回int值之后运行的背景场景?如何sort使用返回的int值(-10or 1)comparecompareTo

java

24
推荐指数
2
解决办法
4万
查看次数

Java 8中"System.out :: println"的用法是什么?

我在java 8中看到了一个迭代集合的代码.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
numbers.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

功能是System.out::println什么?以上代码如何迭代List.

运营商的用途是::什么,我们可以在哪里使用这个运营商?

java java-8

24
推荐指数
1
解决办法
4万
查看次数

我可以使用类的方法而不实例化这个类吗?

我有一个有几个方法的类,这些方法中没有构造函数.

所以,我想知道是否可以在没有创建类实例的情况下调用类的方法.

例如,我可以这样做:

NameOfClass.doMethod(x1,x2,...,xn)
Run Code Online (Sandbox Code Playgroud)

总的来说,我不明白为什么它不可能.我只是调用一个函数来做某事(或返回一些值).如果可能,如果方法为类的私有变量设置值,将会发生什么.我怎样才能达到这个值?以同样的方式?

NameOfClass.nameOfVariable
Run Code Online (Sandbox Code Playgroud)

java oop methods class instantiation

23
推荐指数
4
解决办法
7万
查看次数

Java 8可以动态实现接口以供方法参考吗?

我学习了Java 8的新功能.

我正在玩不同的例子,我发现了一个奇怪的行为:

public static void main(String[] args) {       
    method(Test::new);
}
static class Test{
}

private static void method(Supplier<Test> testSupplier){
    Test test = testSupplier.get();
}
Run Code Online (Sandbox Code Playgroud)

这段代码编译成功,但我不知道它是如何工作的.

为什么可以Test::new接受供应商?

供应商界面看起来很简单:

@FunctionalInterface
public interface Supplier<T> {    
    T get();
}
Run Code Online (Sandbox Code Playgroud)

java java-8 method-reference constructor-reference

19
推荐指数
2
解决办法
2774
查看次数

:: Java运算符在此上下文中做了什么?

在下面的代码示例中,做了::什么:

public static void main(String[] args) {

    List<Integer> l = Arrays.asList(1,2,3,4,5,6,7,8,9,10);      

    Integer s = l.stream().filter(Tests::isGT1)
                         .filter(Tests::isEven)
                         .map(Tests::doubleIt)
                         .findFirst()
                         .orElse(100);          
    System.out.println(s);      
}


private static boolean isGT3(int number){
    return number > 3;
}

private static boolean isEven(int number){
    return number % 2 ==0;
}       
private static int doubleIt(int number){
    return number * 2;
}
Run Code Online (Sandbox Code Playgroud)

java-8

18
推荐指数
1
解决办法
2万
查看次数