我对一些事情很困惑,我希望能在这里获得一些见解。
假设我想要构建一个图形用户界面来可视化JShell内部发生的事情,例如,通过代码段创建的对象是如何相互引用的,以及通过代码段创建的对象是如何包含在我正在运行的JShell实例中的。我如何访问这些对象,最重要的是,我如何访问它们相互引用的方式?
一个具体的例子:我创建一个JShell实例,向它传递一些由用户创建的代码片段,例如,创建一个ArrayList,几个对象,并将所述对象添加到所述ArrayList中。
如何访问这个ArrayList和其中包含的对象,以便在图形用户界面中进行可视化?
进一步澄清:
//say I create a Jshell:
JShell jShell = JShell.create();
//Which then evauletes user code passed from the GUI:
jShell.eval(userCode)
//userCode could be following lines each passed as separate Strings:
“ArrayList<TestObject> allObj = new ArrayList<TestObject>();”
“TestObject tst = new TestObject();”
“TestObject tst2 = new TestObject();”
“allObj.add(tst);”
“allObj.add(tst2);” 如何访问allObj?
如何访问“tst”及其指向的对象?(“tst”指向的TestObject实例);
我知道eval()返回一个包含更改/添加的代码片段的SnippetEvents列表,但是,我不知道如何访问由这些代码片段创建的对象。
发布于 2018-05-23 18:43:47
假设您的类路径可以访问TestObj,您可以在该对象上实现Serializable。在eval完成后,运行另一个自动序列化输出的方法。然后,您可以在代码中反序列化该对象。
https://stackoverflow.com/questions/49318910
复制相似问题