我对Java相当陌生。我来自 PHP,我曾经使用魔术 __get 和 __set 方法在 php 中创建注册表类。这样系统的其他部分就可以轻松做到:
registry.foo = new Foo();
我应该提到我正在尝试创建游戏引擎。这是我在 Java atm 中的注册表:
class Registry {
private static Map<String, Object> box = new HashMap<String, Object>();
public static Object get(String key) {
if (Registry.box.get(key) != null) {
return Registry.box.get(key);
}else {
return null;
}
}
public static void set(String key, Object o) {
Registry.box.put(key, o);
}
}
然后为了系统的其他部分访问注册表,我目前需要这整件事:
((Object) Registry.get("Object")).doSomething();
这真的是很多代码。在 php 中,这将通过简单地完成:
Registry.foo.doSomething();
有什么办法可以让这更简单一点?我想我可以创建公共字段,但是注册表类需要隐式创建这些字段,因为可能需要添加注册表类本身未知的新对象,这很烦人:P
提前致谢!