如何使用反射从java类外部调用私有方法而不出现IllegalAccessException?

2024-01-09

我有一个Dummy具有名为的私有方法的类sayHello。我想打电话sayHello从外面Dummy。我认为通过反思应该是可能的,但我得到了IllegalAccessException。有任何想法吗???


use setAccessible(true)在使用 Method 对象之前invoke method.

import java.lang.reflect.*;
class Dummy{
    private void foo(){
        System.out.println("hello foo()");
    }
}

class Test{
    public static void main(String[] args) throws Exception {
        Dummy d = new Dummy();
        Method m = Dummy.class.getDeclaredMethod("foo");
        //m.invoke(d);// throws java.lang.IllegalAccessException
        m.setAccessible(true);// Abracadabra 
        m.invoke(d);// now its OK
    }
}

如果有人有兴趣调用带参数的方法,请参阅当以字符串形式给出方法名称时,如何调用 Java 方法? https://stackoverflow.com/questions/160970,具体回答如下https://stackoverflow.com/a/30671481 https://stackoverflow.com/a/30671481.

只是不要忘记添加setAccessible(true)调用时private方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用反射从java类外部调用私有方法而不出现IllegalAccessException? 的相关文章

随机推荐

  • 在 django 形式中使用reverse()

    我正在尝试使用 django 的撤销 https docs djangoproject com en dev topics http urls reverse我的自定义小部件的 django 表单定义中的函数 但出现错误 Improperl
  • 网站的 NuGet 包恢复

    我正在尝试使用 NuGet Package RestoreVS2010 视觉源安全 它对我来说部分有效 这是从哪里来的 NuGet 没有获取丢失的包 https stackoverflow com questions 17797052 nu
  • admob 与 AndEngine + google play 服务集成时无法显示游戏画面

    我正在使用 andengine 通过 google play 服务进行游戏开发 我的游戏运行良好 但是 一旦我添加了 admob 并调用了 onSetContentView 回调 我的游戏屏幕就会变黑 只有广告可见 这是我的回调 onSet
  • ASP.NET Core 3.0 中的本地化

    我正在尝试使用 resx 文件使我的项目本地化 对我来说 这不起作用 但对我正在从事该项目的同事来说 它也起作用 有关代码的一些详细信息 Startup cs 文件 public void ConfigureServices IServic
  • Matlab 矩阵中非连续预定义值的出现顺序

    我有一个 9 列矩阵 如下所示 X X X X X X 0 2 0 X X X X X X 6 2 0 X X X X X X 6 2 0 X X X X X X 7 2 0 X X X X X X 8 2 0 X X X X X X 8
  • 传递 HTTP 引荐来源网址(站点 A、B、C - A 到 C)?

    这是一个最好用例子来说明的问题 用户前往Site A 然后点击进入Site B 引用站点现在是站点 A 同一用户点击进入Site C来自站点 B 引用站点现在是站点 B 我想知道是否可以将站点 C 的引用站点显示为站点 A 如果愿意 则为初
  • 从服务器有没有办法知道我的页面正在 Iframe 中加载

    我在我的网页中使用 sammy js 如果有人在 IFrame 对于 IE 中使用此网页 它只会将整个页面重定向到 IFrame 的位置 所以 我在想是否有一种方法可以检查如果 IFrame 正在请求我的页面 如果是这种情况 那么我可以简单
  • 非法转义字符后跟空格

    我正在编写一些代码来使用在终端中加载和运行文件的进程来运行 shell 脚本 我遇到的问题是由于空格而导致终端识别文件名 例如 run file sh foo bar ss 应该在终端中运行 run file sh foo bar ss 这
  • Backbone.js:从视图的 Initialize: 函数调用 render()

    我希望我的视图在第一次创建时呈现自身 所以我打电话this render in the initialize 函数 像这样 删除了一些代码 var MyView Backbone View extend el mydiv initializ
  • 哈希表如何绑定到下拉列表?

    在 vb net winforms 中 哈希表如何绑定到下拉列表或任何其他数据源驱动的控件 只需使用下拉列表的 Datasource 属性 DropDownList dd new DropDownList Hashtable mycount
  • 如何在线恢复 Visual Studio 中的 git pull 请求?

    一名团队成员使用 git for Visual Studio Online 提出了拉取请求 它已获得批准并成功合并 但我们希望撤消该操作并恢复到 PR 之前的分支状态 在当地 我知道有一种方法可以做到这一点 这将是获取主分支的一个版本 恢复
  • 可访问 Rails 模型的 Ruby 脚本

    在哪里以及如何运行使用我的 Rails 环境的简单脚本 具体来说 我有一列包含多条信息 我现在已经为每条信息添加了列 并且需要运行一个 ruby 脚本 该脚本可以运行以调用数据库每一行上的方法来推断数据并将其保存到新专栏 如果我理解您的用例
  • 在 IE 和 VS2008 中使用断点调试 Javascript

    我无法在 Studio 中使用 Javascript 断点 如果我使用调试器 我就可以进行调试 我见过这个在 VS Net 2005 中调试时断点未连接 https stackoverflow com questions 163133 br
  • 尝试设置壁纸时出现以下错误[重复]

    这个问题在这里已经有答案了 public HeavyLifter Context context Handler callback this context context this callback callback this manag
  • Blazor 服务器身份验证 JWT 适用于 SignalR 除 Web 应用程序之外的所有内容

    我希望有人能为我澄清一些概念 我使用 WinForms 和 Blazor Server 并且希望向用户发送消息 为此 我决定尝试 JWT 身份验证 我还希望 Blazor 服务器内置此 JWT 身份验证根据文档 https learn mi
  • 在 Mkannotation 图像上添加标签文本

    我正在使用带有自定义 placeMark 的 MKMapView 它有一个 NSString 值 我想将其作为标签添加到 mkannotationview 图像中 MKAnnotationView mapView MKMapView Map
  • 如何在使用 .NET Framework 3.5 构建的 C# 项目中使用 .NET 4.0 代码? [复制]

    这个问题在这里已经有答案了 我想从应使用 NET 3 5 构建的 C 项目中调用使用 NET 4 0 构建的 dll 我的意思是 仅当我的计算机安装了 net 4 0 时 才应执行 net 4 0 相关代码 否则只需跳过该部分 这可能吗 任
  • Kendo UI Angular JS 和 AutoComplete 服务

    我正在制作一个 Angular 应用程序 并开始使用一些 Kendo UI 控件 我在连接自动完成控件时遇到一些问题 我想使用一个工厂来从我的数据库返回 自动完成 值的列表 我已经包含了自动完成控件 并且我正在尝试使用 k options
  • .NET FileInfo.LastWriteTime 和 FileInfo.LastAccessTime 错误

    当我打电话时FileInfo path LastAccessTime or FileInfo path LastWriteTime对于正在写入的文件 它返回文件的创建时间 而不是上次写入的时间 即现在 有没有办法获取这些信息 编辑 到目前为
  • 如何使用反射从java类外部调用私有方法而不出现IllegalAccessException?

    我有一个Dummy具有名为的私有方法的类sayHello 我想打电话sayHello从外面Dummy 我认为通过反思应该是可能的 但我得到了IllegalAccessException 有任何想法吗 use setAccessible tr