- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 Java 中是否有某种方法可以像在 PHP 中那样使用 __call
来使用魔术方法?
例如:
class foo {
@Setter @Getter
int id;
@Getter
Map <String, ClassInFoo> myMap;
protected class ClassInFoo {
@Setter @Getter
String name;
}
@Setter
String defaultKey;
}
我正在使用 Project Lombok getter 和 setter 方法的注释以简化代码。
让我们考虑一下,我的 map 包含多个由 String 映射的项目,并且 defaultKey 定义了默认项目。
我想要的是能够调用 foo.getName()
,它将返回默认名称 foo.myMap.get(defaultKey).getName()
.
我不能只手动编写所有 getter 的原因是 Foo 类实际上是用泛型继承的,内部类可能不同。
我有点需要这样的东西:
function Object __call(method) {
if (exist_method(this.method)
return this.method();
else
return this.myMap.get(defaultKey).method();
}
这在 Java 中有可能吗?
编辑:
我在这里做了一个更精确的例子来说明我想要实现的目标:https://gist.github.com/1864457
这样做的唯一原因是为了“速记”内部类中的方法。
最佳答案
你绝对可以通过reflection通过使用它的功能,例如
public Method getMethod(String name, Class<?>... parameterTypes)
可以用来查看一个类是否定义了某些方法,但我不明白如何通过正确使用接口(interface)、继承和重写方法来解决您的问题
提供反射等功能来管理某些无法解决的问题,但 Java 不是 PHP,因此您应该尽可能避免使用它,因为它不属于该语言的哲学。
关于java - 在 Java 中神奇地调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9350180/
tty_driver 结构中的“神奇”值是什么 struct tty_driver { int magic; /* magic number for this stru
这是一个等效的提取代码: #include #include #include #include #include class ChatMessageEdit : public QTextE
我还没有找到适合我的这个问题的具体答案,但也许我误解了一两个关键点。 我正在尝试为一个项目创建数据迁移策略,其中 3 个系统(2 个 MySQL、1 个 MS SQL)将合并到 1 个新系统 (MS
我想在输出 JSON 时从 ActiveRecord/ActiveModel 类中过滤掉特定字段。 最直接的方法就是覆盖 as_json,可能像这样: def as_json (options = n
我是一名优秀的程序员,十分优秀!