javap结果中的复制方法
BaseController中有一种方法,例如javap结果中的复制方法,java,generics,javap,Java,Generics,Javap,BaseController中有一种方法,例如 public abstract class BaseManagementController<V, F extends BaseForm> { @PostMapping @ResponseStatus(HttpStatus.CREATED) protected void add(@Valid @RequestBody F form, HttpServletRequest request) { /
public abstract class BaseManagementController<V, F extends BaseForm> {
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
protected void add(@Valid @RequestBody F form, HttpServletRequest request) {
// ...
}
}
为什么有两个加法?超载了吗
“为什么有两种添加方法?”
因为可能有一些功能可能更普遍地适用于所有控制器
,并且可以在BaseManagementController.add()中实现这些功能
子类的add()
可以简单地调用super.add()
并在其super的实现中利用现有的功能
“是否超载?”
不,但它是
在C类中声明或由C类继承的实例方法将重写在A类中声明的另一个方法mA
,如果以下所有条件均为真:
- C是a的一个子类
- C不继承
mA
- mC的签名是
mA
签名的子签名()
- 以下其中一项是
正确:
mA
是公共的
“为什么有两种添加方法?”
因为可能有一些功能可能更普遍地适用于所有控制器
,并且可以在BaseManagementController.add()中实现这些功能
子类的add()
可以简单地调用super.add()
并在其super的实现中利用现有的功能
“是否超载?”
不,但它是
在C类中声明或由C类继承的实例方法将重写在A类中声明的另一个方法mA
,如果以下所有条件均为真:
- C是a的一个子类
- C不继承
mA
- mC的签名是
mA
签名的子签名()
- 以下其中一项是
正确:
mA
是公共的
public class BannerController extends BaseManagementController<BannerVO, BannerForm> {
@Override
public void add(@Valid @RequestBody BannerForm form, HttpServletRequest request) {
super.add(form, request);
}
}
public void add(com.foo.admin.web.vo.BannerForm, javax.servlet.http.HttpServletRequest);
descriptor: (Lcom/foo/admin/web/vo/BannerForm;Ljavax/servlet/http/HttpServletRequest;)V
flags: ACC_PUBLIC
public void add(com.foo.admin.web.vo.BaseForm, javax.servlet.http.HttpServletRequest);
descriptor: (Lcom/foo/admin/web/vo/BaseForm;Ljavax/servlet/http/HttpServletRequest;)V
flags: ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
public abstract class BaseManagementController<V, F extends BaseForm> {
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
protected void add(@Valid @RequestBody F form, HttpServletRequest request) {
/* ...All Controllers need to do this... */
controlStuff(form, request);
}
private void controlStuff(F form, HttpServletRequest request) {
/* ...do whatever Controllers do...*/
}
}
public class BannerController extends BaseManagementController<BannerVO, BannerForm> {
@Override
public void add(@Valid @RequestBody BannerForm form, HttpServletRequest request) {
super.add(form, request);
processBanner(form, request);
}
private void processBanner(BannerForm form, HttpServletRequest request) {
/*...do something special for banners...*/
}
}