我对某些事情感到非常困惑,我希望能有一些见解。
假设我想构建一个可视化JShell内部内容的GUI,即片段创建的对象如何相互引用,以及Snippets创建的对象包含在我运行的JShell实例中。如何访问这些对象,最重要的是,如何访问它们相互引用的方式?
一个具体的例子:我创建一个JShell实例,传递一些由用户创建的片段,这会导致创建一个例如ArrayList,一些对象,并将所述对象添加到所述ArrayList。
如何访问此ArrayList及其中包含的对象以在GUI中显示它?
进一步澄清:
//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列表,但是,我无法理解如何访问这些片段创建的对象。
答案 0 :(得分:0)
假设您的类路径可以访问TestObj,您可以在该对象上实现Serializable。完成eval后,自动运行另一个序列化输出的方法。然后,您可以在代码中反序列化该对象。