바이트 배열에서 java.io.Serializable
의 인스턴스를 가져와야하는 도구를 작성 중입니다.
어려움은 classpath에 "진짜"클래스가 없다는 것입니다. (왜 여기에 .. 설명하지 않겠습니다). 구현 클래스
Q 클래스 경로 상에 있지 않기 때문에
코드는 아래에 ClassNotFoundException
is.readObject()
에 실패 인가
이것을 달성하는 것이 가능하다? 반사에 의해? Unsafe
을 사용하여? ClassLoader
의 하위 클래스를 사용하여? 또는...?classpath에서 구현 클래스없이 "직렬화"의 인스턴스를 deserialize하는 방법은 무엇입니까?
byte[] data = ...
try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));) {
Object o = ois.readObject();
Serializable s = (Serializable)o;
}
* 이것을 구현할 수 있습니까? * 구현하지 않아도됩니다. 예,'classLoader'를 써서 클래스를로드 할 수 있습니다. 하지만 수업을 다시해야합니다. –
엘리엇이 말한 것과 마찬가지입니다. Java 직렬화는 클래스 자체가 아니라 클래스의 데이터 만 전송합니다 (데이터가 의미하는 방법이나 정의가 아님). 수업이 없으면, 당신은 가라 앉았습니다. – markspace
나는 downvotes가 왜 이런 종류의 질문을하는 것이 "나쁘다"는 것을 알고 싶다. 또는 사용자에게 오류가 발생 했습니까? 거짓 앵커를 주겠습니까? 나는 그렇게 생각하지 않는다. – titou10