我正在研究Smalltalk反射,我想知道是否有可能扩展单个对象,例如在Ruby中可能.对此我指的是只有特定对象响应的选择器.
这是一些Ruby代码,说明我的意思.为了澄清:在Ruby中,这将为此对象打开一个虚拟类,并使用新定义对其进行扩展.这里至关重要的部分是类定义没有任何改变!
o = Object.new
o.instance_eval {def foo;puts "foo";end}
o.foo #=> "foo"
#however this will fail:
m = Object.new
m.foo #=> NoMethod error
Run Code Online (Sandbox Code Playgroud)
更具体地说,我的问题是在标准Squeak/Pharo或其他smalltalk实现中是否可行,而不添加实质结构或代码来实现这一点.因此,使用Smalltalk中存在的常规反射特征的其他词语.
例如,可以添加方法,删除方法,将新代码编译到类中,更改实例变量以及任何内容,但我还没有找到扩展单个对象的方法.
Test addInstVarNamed: #var.
Test compile: 'var ^var'.
t:= Test new.
Test instVarNames.
t instVarNamed: #var put: 666.
t var. #=> 666
Run Code Online (Sandbox Code Playgroud)
如果答案是否定的,那么解释原因.我不是在寻找解决这个问题的方法,而是要理解为什么它不是小问题.
上下文和设置信息:
问题描述
在Spring的JavaConfig用于引导Spring上下文而不是使用a的项目中,启动jetty 9非常慢web.xml.Jetty似乎在适当的时间内无所事事.这发生在以下行之后:
INFO:oejs.Server:main: jetty-9.2.3.v20140905
Jetty确实最终开始,但与常规的tomcat 7发行版相比,启动需要很长时间.
其他资源
public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
//implementation
}
Run Code Online (Sandbox Code Playgroud)