Java 的 Class 类提供了很多的 getDeclared××× 方法和 get××× 方法,例如 getDeclaredMethod 和 getMethod 成对出现,getDeclaredConstructors 和 getConstructors 也是成对出现,那两者有什么差别呢?看如下代码:
public static void main(String[] args) throws Exception {
String methodName = "doStuff";
Method m1 = Foo.class.getDeclaredMethod(methodName);
Method m2 = Foo.class.getMethod(methodName);
}
// 内部类
class Foo {
void doStuff() { }
}
运行报以下错误:
Exception in thread "main" java.lang.NoSuchMethodException: ClassTest$Foo.doStuff()
at java.lang.Class.getMethod(Class.java:1605)
at ClassTest.main(ClassTest.java:8)
异常显示 m2 变量的 getMethod 方法没有找到 doStuff 方法,但是从代码中可以看出明明就有该方法啊,原因出在
getMethod 方法获得的是所有 public 访问级别的方法,包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法。
getDeclaredMethod 获得的是自身类的所有方法,包括公有(public)方法,protected,私有(private)方法等,而且不受限于访问权限,但是限定本类(可以访问本身类的方法或者内部类的方法)。
其它的 getDeclared××× 方法和 get××× 方法与此相似。
getDeclaredMethod*()获取的是类自身声明的所有方法,包含public、protected和private方法。
getMethod*()获取的是类的所有共有方法,这就包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法。
分享到:
相关推荐
【Flutter】Dart 面向对象 ( get 方法 | set 方法 | 静态方法 ) https://hanshuliang.blog.csdn.net/article/details/113883540 博客源码快照
本文针对网页开发中使用Http协议中POST和GET方法的区别进行了讨论,希望对大家有帮助
Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都...
get set方法生成注释和字段注释.zip,包括GetterSetterUtil.java、GetterSetterUtil.class、get set方法生成注释和字段注释.docx详细讲解如果用快捷方式生成set、get注释
自定义生成set,get方法注释的java文件,下载后可以根据我的文章中的说明步骤进行操作。
PHP 中的get与 post 方法的区别
C# 后台请求接口的方法(GET,POST)
Ajax中Get请求和Post请求的区别 简单例子 何时使用Get请求,何时使用Post请求
根据sql服务器IP获取sql服务器的所有数据库名及数据表名,在根据所选的表名生成所选表的所有字段的get、set方法。
生成普通java对象的get和Set方法和注释。
金蝶WISE15.0运行时,会提示GetData对象不支持该属性或方法的解决方法
c# 运用get/post 和使用webservicec# 运用get/post 和使用webservicec# 运用get/post 和使用webservicec# 运用get/post 和使用webservice
java中set和get方法的理解 写给初学者
HTTP协议GET和POST的使用区别 摘 要:浅谈HTTP中GET、POST用法以及它们的区别 关键词: HTTP协议、POST方法、GET方法、区别 HTTP方法 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,...
解剖协议get与post方法的差别 HTTP协议
java实现调用httpclient接口的类和方法,包括了get和post传参方式,简单易懂
使用retrofit的get方法访问网络返回json的简单demo,非常清晰。
post和get 方法的比较 ? Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:
Java 反射创建get set方法及反射方法的调用
我这里有两种实现: 1:libcurl实现的CHttpClient类,该类实现了Htpp和Https的get post方法。 2:winhttp实现的WinHttpClient类,同样也实现了Htpp和Https的get post方法。 两者使用起来都很方便灵活。 详细说明: ...