`
peonyzzdx
  • 浏览: 590821 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

getDeclared××× 方法和 get××× 方法的区别

 
阅读更多
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方法。
分享到:
评论

相关推荐

    Http协议中POST和GET方法的本质区别

    HTTP中的POST和GET方法是两种最常用于网页开发的数据传输方式,它们在原理和表现形式上存在本质区别。 首先,从原理上看,GET方法通常用于获取资源信息,它通过URL来传递参数,URL全称为资源描述符,表示网络上的一...

    【Flutter】Dart 面向对象 ( get 方法 set 方法 静态方法 ).zip

    【Flutter】Dart 面向对象 ( get 方法 | set 方法 | 静态方法 ) https://hanshuliang.blog.csdn.net/article/details/113883540 博客源码快照

    Ajax中get和post区别

    在上面的实例代码中,我们使用了Get和Post请求来演示两种请求方法的区别。在客户端代码中,我们使用XMLHttpRequest对象创建了一个Get请求和一个Post请求,并将参数传递给服务器端。在服务器端代码中,我们使用...

    学学Python_字符串11_字典的方法04 get方法

    - `stringMethod02.py`、`stringAdvanceOprate.py`、`stringFormatPrint.py`、`stringOprate.py`、`stringMethod.py` 可能包含了关于字符串的各种操作和方法,如格式化输出、拼接、查找等。 - `dictionaryOperate.py...

    VB的GET SET方法批量生成加使用说明书

    在VB(Visual Basic)编程语言中,GET和SET方法是用于访问和修改对象属性的关键机制。这些方法在面向对象编程中扮演着重要角色,确保数据的封装性和安全性。本篇文章将详细讲解GET和SET方法的原理,以及如何在VB中...

    深入理解get与post方法的差别

    与GET方法相比,POST方法在数据传输和处理上提供了更多的灵活性和安全性: 1. **数据传输方式**:POST方法将数据放在HTTP请求的实体主体中,而不是URL中,这意味着数据不会暴露在URL中,增加了数据的安全性。 2. *...

    Java 反射创建get set方法及反射方法的调用

    在Java编程语言中,反射(Reflection)是一种强大的技术,它允许程序在运行时检查类、接口、字段和方法的信息,并能够动态地创建对象和调用方法。本文将详细介绍如何利用Java反射来创建get和set方法,并演示如何通过...

    用Visual Studio 开发工具 如何快速批量生成属性的 get 和set 方法 .

    本篇文章将详细讲解如何使用Visual Studio开发工具快速批量生成属性的get和set方法。 首先,我们需要理解属性在面向对象编程中的作用。属性是类的一个成员,它封装了类的私有字段,提供了对外部访问这些字段的控制...

    对Django 中request.get和request.post的区别详解

    Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都...

    hibernate中get和load方法的区别

    在Java的持久化框架Hibernate中,`get`和`load`方法都是用于从数据库中获取对象,但它们之间存在一些重要的区别。理解这些差异对于优化应用程序的性能和避免潜在问题至关重要。 首先,`get`方法是直接从数据库中...

    C# 后台请求接口的方法(GET,POST)

    根据给定的文件信息,我们可以总结出以下关于C#后台请求接口的方法(GET, POST)的知识点: ...以上就是关于C#后台请求接口的方法(GET, POST)的知识点总结,希望能对理解和使用这两种请求方式有所帮助。

    生成getSet方法和注释

    在Java编程中,get和set方法是面向对象设计的一个重要组成部分,主要用于封装对象的属性,以保护数据的私有性并提供对外访问的接口。在编写大量具有属性的类时,手动为每个属性编写get和set方法可能会非常耗时。为了...

    java中set和get方法的理解

    ### Java中Set和Get方法的理解 #### 一、引言 在Java编程中,`set`和`get`方法是非常常见的编程模式,特别是在面向对象编程(OOP)中。这两个方法通常用于封装类的属性,从而提供了对这些属性的访问和修改的方式。...

    ajax POST 与GET提交的区别

    在探讨AJAX中GET和POST的区别之前,我们先来了解一下这两种请求方式的基本概念。 **GET**请求通常用于获取资源信息,它将参数拼接到URL后面,并通过URL传输数据。这种方式适合于那些不会更改服务器状态的操作,例如...

    http 测试程序,post 和get方法测试

    HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。...对于任何涉及到网络通信的项目,理解并掌握GET和POST方法都是至关重要的。

    学学Python_字符串12_字典的方法练习 get方法练习

    本篇将详细讲解标题和描述中提到的“字典的get方法”,以及与之相关的字符串操作和其他字典方法。 首先,我们关注的是“get”方法。在Python字典中,`get`方法用于安全地获取字典中的值。它的语法是 `dict.get(key,...

    post_get_put等请求方法的区别

    HTTP 请求方法详解 在本文中,我们将深入探讨 ...GET、POST、PUT、DELETE 等请求方法都有其特点和应用场景。在实际开发中,我们需要根据具体情况选择合适的请求方法,以确保服务器端的资源能够被正确地获取和修改。

    api实现http请求,支持post和get方法

    本主题聚焦于如何利用API实现HTTP请求,特别是支持POST和GET这两种最常见的HTTP方法。在Delphi 6这样的集成开发环境中,开发者经常需要与网络进行交互,获取或发送数据,而WinINet API库则为此提供了便利。 Delphi ...

    RestTemplate的GET方法详解.docx

    在本篇文章中,我们将详细探讨两个常用的GET方法:`getForObject()`和`getForEntity()`。 1. `getForObject()`方法 `getForObject()`方法主要用于发送HTTP GET请求,并将响应的主体内容转换为指定的Java对象。它有...

    get set方法生成注释和字段注释.zip

    get set方法生成注释和字段注释.zip,包括GetterSetterUtil.java、GetterSetterUtil.class、get set方法生成注释和字段注释.docx详细讲解如果用快捷方式生成set、get注释

Global site tag (gtag.js) - Google Analytics