2

我对某些事情感到非常困惑,我希望能在这里得到一些见解。

假设我想构建一个图形用户界面,可视化 JShell 内部发生的事情,即片段创建的对象如何相互引用,以及片段创建的对象包含在我运行的 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 列表,但是,我无法理解如何访问由这些片段创建的对象。

4

1 回答 1

0

假设您的类路径可以访问 TestObj,您可以在该对象上实现 Serializable。eval 完成后,自动运行另一个方法来序列化输出。然后您可以在代码中反序列化该对象。

于 2018-05-23T10:43:46.573 回答