首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8函数和类

Java 8函数和类
EN

Stack Overflow用户
提问于 2015-07-02 11:32:34
回答 4查看 367关注 0票数 2

在Java 8中,函数可以驻留在包中而不定义类吗?

当您有一个函数时,似乎不需要一个类。

我熟悉Java,但对函数式编程还很陌生。谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-02 11:38:17

某种程度上来说,但功能并不像函数式编程语言那样是一等公民。

在Java 8中,可以将方法添加到接口或Enum中。

代码语言:javascript
复制
public interface Loggable {

    default Logger logger() {
        return LoggerFactory.getLogger(this.getClass());
    }
}


public enum Level {
    HIGH  (3),
    MEDIUM(2),
    LOW   (1)

    private final int levelCode;

    Level(int levelCode) {
        this.levelCode = levelCode;
    }

    public int getLevelCode() {
        return this.levelCode;
    }
}

Java8中还有一个名为FunctionalInterface的特殊注释,它可以用于创建一个函数接口,该接口可以在不作为类的成员的情况下按行实现。

如果您真的想在Java中进行函数式编程,因为您希望避免用低阶函数来维护状态,那么您可以始终使这些函数保持静态,然后将该类作为一个包对待。这样,您就不必创建任何对象。

票数 -1
EN

Stack Overflow用户

发布于 2015-07-02 11:36:25

不,Java 8中的函数由函数接口表示。函数接口可以由实现该接口的类、实现该接口的单一方法的lambda表达式或方法引用来实现。在所有这些情况下,“函数”的实现都驻留在某个类中。

票数 3
EN

Stack Overflow用户

发布于 2015-07-02 11:52:51

您可以声明一个不能实例化的final class (生成private构造函数),并将函数作为该类的静态方法放在那里。您可以将该类视为函数的“命名空间”。若要在不指定类名的情况下使用它们,可以静态导入该类:

代码语言:javascript
复制
import static com.example.mypackage.MyUtilityClass.*;

这种方法在许多Java库和JDK (例如,java.lang.Math类)中得到了广泛的应用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31183444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档