Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否可以通知远程主机原始数据类型I';我正在发送我的字节[]?_Java_Casting_Bytearray_Instance_Instanceof - Fatal编程技术网

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)
是否可以完成你的工作。