在Java 8中序列化Java函数

时间:2016-07-29 18:45:41

标签: java serialization lambda java-8 akka

我正在尝试创建一个模拟程序堆栈的类。是否可以创建此课程serializable?我希望能够将其用作Akka消息。谢谢!

public class ProgramStack<T>{

    public final Queue<UnaryOperator<T>> programStack;
    private T context;

    ProgramStack(Queue<UnaryOperator<T>> programStack, T context) {
        this.programStack = programStack;
        this.context = context;
    }

    public void next() {
        UnaryOperator function = programStack.poll();
        function.apply(context);
    }

    public boolean hasNext() {
        return !programStack.isEmpty();
    }

}

2 个答案:

答案 0 :(得分:1)

对于没有序列化方法的序列,您可以序列化具有行为的对象。无论如何为了能够序列化你必须实现Serializable。所有成员都必须这样做。如果查看doc https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html Queue没有实现Serializable,那么请确保对象实现Queue是否可序列化。我不知道T必须是什么,但是为了序列化ProgramStack类型的对象,还必须实现Serializable。

答案 1 :(得分:-4)

import java.io.Serializable;

public class ProgramStack<T> implements Serializable {

// etc etc

}