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

Java功能接口的优势是什么?[副本]

姬雪松
2023-03-14

我正在学习这个函数接口科目,我研究如何使用预定义的函数接口:谓词和函数。

所以我创建了几个实现:

public static Predicate<String> isStringEmpty = String::isEmpty;
public static Predicate<String> isStringNotEmpty = isStringEmpty.negate();
public static Predicate<ArrayList> arrayListIsEmpty = ArrayList::isEmpty;
public static Predicate<ArrayList> arrayListIsNotEmpty = arrayListIsEmpty.negate();
public static Predicate<String> stringStartsWithA = s -> s.startsWith("A");
public static Predicate<Integer> largerThanNine = n -> n > 9;

public static Function<WebElement, String> getWebElementText = WebElement::getText;
//etc.
isStringEmpty.negate().test("asd");
isStringNotEmpty.test("asd");
stringStartsWithA.negate().test("asd");
isStringNotEmpty.and(isStringEmpty).negate().test("aaa");

csvLine = getWebElementText.apply(leaugeRowElement);

这与简单地调用一个常规函数来完成这些任务有何不同?

是为了让lambdas使用它们吗?是否允许将它们作为方法参数传递?

我真的错过了这个技术的真正道理。

共有1个答案

仉磊
2023-03-14

如果您阅读关于功能接口和lambda的手册,您的问题就会得到解答。看看lambda表达式和通常的匿名类创建之间的区别。这两个变量可以以相同的方式使用。

    //using anonymous class 
    Predicate<String> isStringEmptyObj = new Predicate<String>() {
        @Override
        public boolean test(String o) {
            return o.isEmpty();
        }
    };
    System.out.println(isStringEmptyObj.negate().test("asd"));

    //using lambda with reference to existing String object method
    Predicate<String> isStringEmpty = String::isEmpty;
    System.out.println(isStringEmpty.negate().test("asd"));
 类似资料:
  • 本文向大家介绍AJAX的优势是什么?相关面试题,主要包含被问及AJAX的优势是什么?时的应答技巧和注意事项,需要的朋友参考一下 ajax是异步传输技术,可以通过javascript实现,也可以通过JQuery框架实现,实现局部刷新,减轻了服务器的压力,也提高了用户体验。

  • 在我的项目中,我有一个小数据结构<code>Key</code>。 是的,这个类很简单,每个字段都可以公开访问。 但是有人建议我使用POJO风格的课程,但当我问为什么他们无法告诉我时。 在我看来,调用 getter 和 setters 比直接进入一个领域要慢。 那么为什么我必须使用POJO编程风格呢?

  • 在Java8中,新的包是Java。util。函数包含很多函数接口。该软件包的文档(http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html)多次提到“函数形状”: 有几种基本函数形状,包括函数(从T到R的一元函数)、消费者(从T到void的一元函数)、谓词(从T到布尔的一元函数)和供应者(从T到

  • 本文向大家介绍使用vuex的优势是什么?相关面试题,主要包含被问及使用vuex的优势是什么?时的应答技巧和注意事项,需要的朋友参考一下 其实vuex中的所有功能都能够通过其他的方式进行实现,只不过vuex对这些方法进行了整合处理,使用起来更加便捷,同时也便于维护。全局状态变量的统一管理,有这么个中介你找不找他呢?

  • 本文向大家介绍python语言的优势是什么,包括了python语言的优势是什么的使用技巧和注意事项,需要的朋友参考一下 Python是一门简单易学的编程语言。阅读好的Python程序感觉就像阅读英语,尽管是非常严格的英语。Python的这种伪代码特性是其最大强项之一,它可让你专注于解决问题的办法而不是语言本身。python的用途和优点都有什么呢? Python编程语言开发快,语言简洁,没那么多技巧

  • 我知道这会是今天关于Stackoverflow的蹩脚问题...但我仍然希望在java中找到以下代码段的功能