小编fro*_*ion的帖子

是否可以在Smalltalk中扩展单个对象

我正在研究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)

如果答案是否定的,那么解释原因.我不是在寻找解决这个问题的方法,而是要理解为什么它不是小问题.

reflection smalltalk squeak pharo

11
推荐指数
3
解决办法
1262
查看次数

由于扫描导致Jetty启动延迟

上下文和设置信息:

  • 带有eclipse jetty插件的Jetty 9
  • Spring 4.1.1.RELEASE with Spring Security 3.2.3
  • Spring Java配置(没有web.xml)

问题描述 在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)

spring jetty spring-security maven-jetty-plugin jetty-9

10
推荐指数
1
解决办法
8252
查看次数