나는 Spark의 클로저와 그 serialization을 배우고 있으며 아래에 표시된 데모를 작성했습니다. 그러나 scala.reflect.ClassTag를 가져올 때 "잘못된 Top 문 선언"메시지가 나타납니다."잘못된 Top 문 선언"가져 오기 scala.reflect.ClassTag
package lulijun.scala.study.serialize
import java.io._
import java.nio.ByteBuffer
import org.apache.spark.serializer.{DeserializationStream, SerializationStream}
import org.apache.spark.util.{ByteBufferInputStream, ByteBufferOutputStream}
import scala.reflect.ClassTag
/**
* Created by lulijun on 2017/10/23.
*/
public class JavaSerializerTest {
def serialize[T: ClassTag](t: T): ByteBuffer = {
val bos = new ByteBufferOutputStream()
val out = serializeStream(bos)
out.writeObject(t)
out.close()
bos.toByteBuffer
}
def deserialize[T: ClassTag](bytes: ByteBuffer, loader: ClassLoader): T = {
val bis = new ByteBufferInputStream(bytes)
val in = deserializeStream(bis, loader)
in.readObject()
}
def serializeStream(s: OutputStream): SerializationStream = {
new JavaSerializationStream(s, 1, true)
}
def deserializeStream(s: InputStream, loader: ClassLoader): DeserializationStream = {
new JavaDeserializationStream(s, loader)
}
}
"scala.reflect.ClassTag"는 클래스가 아닌 객체에서만 가져올 수 있습니다. – lulijun