我有一个类Child和class Parent,如下所示
请参阅下面这两个类的语法。
class Child extends Parent
{
Response resp = new Response();
if(2<3)
{
resp = performSomeAction();
}
}
class Parent
{
protected Response performSomeAction() throws Exception {
Method action = null;
action = getClass().getMethod(request.action, null);
return (Response) action.invoke(this, null);
}
}
我在这里很困惑,有人可以让我知道这里的班级逻辑是什么? 请问有谁请让我知道它到底在做什么?
请分享您的观点。非常感谢你 。
答案 0 :(得分:1)
您的Parent
类调用request.action
定义的方法(无参数)。此方法可以在Parent
,Child
或两个类中定义(然后调用Child
中定义的overriden方法)。我们无法帮助您,因为您的代码不可执行也不一致。
答案 1 :(得分:0)
这是使用Reflection。 (据我所知,与子类化或你的Child
类无关......)
要点是在运行时获取对特定方法(基于其名称)的引用,并动态调用它。 (通常,您将在代码中具体使用一种可编译到类文件中的具体方法。)
在这种情况下,Request
上有一个名为action
的字段,它描述了要采取的操作 - 并且处理类中必须有相应的no-args方法具有相同的名称。这可以通过调用类getMethod,然后调用以下行来找到。
请注意,由于调用getClass()
,这些方法不一定需要直接存在于Parent
类中;只要正确的子类正在处理相关的消息,它们就可以存在于子类中。