📄 pythonobjectinputstream.java
字号:
// Copyright 2000 Finn Bockpackage org.python.util;import java.io.*;import org.python.core.*;public class PythonObjectInputStream extends ObjectInputStream { public PythonObjectInputStream(InputStream istr) throws IOException { super(istr); enableResolveObject(true); } protected Object resolveObject(Object o) throws IOException { Class cls = o.getClass(); if (cls == PyNone.class) return Py.None; else if (cls == PyEllipsis.class) return Py.Ellipsis; else if (cls == PyNotImplemented.class) return Py.NotImplemented; else if (o instanceof PySingleton) throw new IOException("Unserializing a singleton"); return o; } protected Class resolveClass(ObjectStreamClass v) throws IOException, ClassNotFoundException { String clsName = v.getName(); //System.out.println(clsName); if (clsName.startsWith("org.python.proxies")) { int idx = clsName.lastIndexOf('$'); if (idx > 19) clsName = clsName.substring(19, idx); //System.out.println("new:" + clsName); idx = clsName.indexOf('$'); if (idx >= 0) { String mod = clsName.substring(0, idx); clsName = clsName.substring(idx+1); PyObject module = importModule(mod); PyObject pycls = module.__getattr__(clsName.intern()); Object cls = pycls.__tojava__(Class.class); if (cls != null && cls != Py.NoConversion) return (Class) cls; } } try { return super.resolveClass(v); } catch (ClassNotFoundException exc) { PyObject m = importModule(clsName); //System.out.println("m:" + m); Object cls = m.__tojava__(Class.class); //System.out.println("cls:" + cls); if (cls != null && cls != Py.NoConversion) return (Class) cls; throw exc; } } private static PyObject importModule(String name) { PyObject silly_list = new PyTuple(new PyString[] { Py.newString("__doc__"), }); return __builtin__.__import__(name, null, null, silly_list); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -