Java 我是否可以通知远程主机原始数据类型I';我正在发送我的字节[]?
假设我要创建一个通用容器,以便在节点的本地拓扑中发送:Java 我是否可以通知远程主机原始数据类型I';我正在发送我的字节[]?,java,casting,bytearray,instance,instanceof,Java,Casting,Bytearray,Instance,Instanceof,假设我要创建一个通用容器,以便在节点的本地拓扑中发送: public class StreamReceiver{ byte[] payload; } 在接收端,我希望能够将这个byte[]转换为一个特定的数据类型,很可能作为同一对象的一部分随负载一起传递。比如: public class StreamPackage{ byte[] payload; Object/String/Something: [some identifier of what payload typ
public class StreamReceiver{
byte[] payload;
}
在接收端,我希望能够将这个byte[]
转换为一个特定的数据类型,很可能作为同一对象的一部分随负载一起传递。比如:
public class StreamPackage{
byte[] payload;
Object/String/Something: [some identifier of what payload type is]
}
这样我就可以在接收端检查这个变量,以了解如何正确地转换数据
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException, ClassNotFoundException {
MyClass myClass = new MyClass("An object");
StreamObject so = new StreamObject(myClass, "MyClass");
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(".test")));
oos.writeObject(so);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File(".test")));
so = (StreamObject) ois.readObject();
Class clz = Class.forName(so.name);
System.out.println(clz.getName());
Object o = clz.cast(so.o);
System.out.println(o.getClass());
}
}
class StreamObject implements Serializable{
public StreamObject(Serializable o, String name) {
this.o = o;
this.name = name;
}
Serializable o;
String name;
}
class MyClass implements Serializable{
String id;
public MyClass(String id) {
this.id = id;
}
}
此示例的输出为
MyClass类MyClass 但是,您必须仅通过反射来获取字段和方法信息
我想不出任何其他的方法。你的
数据对象可以实现吗?是的,但是我想要的东西不需要经常检查如果instanceof
我不确定Class c=Class.forName(name:String)
和c.cast(o:Object)
是否可以完成你的工作。