有些时候我们继承某类时,父类中的私有方法对子类不可以,但又不想去改变父类。这时可以利用java.reflect.Method的setAccessible方法来改变该私有方法的访问标志。
父类中getTime()方法是私有的。
package reflect; import java.text.SimpleDateFormat; import java.util.Date; public class OriginalMethod { private String getTime(){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd-HH.mm.ss"); String time = sdf.format(date); return time; } public String getBjTime(){ return "BJ time is : " + getTime(); } }
子类中想引用这个方法:
package reflect; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Child extends OriginalMethod { static Method getTime = null; static { try { getTime = OriginalMethod.class.getDeclaredMethod("getTime"); getTime.setAccessible(true); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } } String getTJTime(){ String Tianji = ""; try { Tianji = (String) getTime.invoke(this); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } return "tian ji time is : " + Tianji; } public static void main(String[] args) { String ss = new Child().getTJTime(); System.out.println(ss); } }
相关推荐
- **设置私有字段的值**:使用`SetValue`方法将`myValue`字段的值从“old value”更改为“new value”。 #### 2.3 深入理解 - **`BindingFlags`标志**:`BindingFlags`是一个枚举类型,用于指定如何搜索要访问的...
- **修改页属性**:使用VirtualProtect函数,将只读数据段的页面保护标志更改为可写,如PAGE_READWRITE。 - **写入数据**:现在可以使用WriteProcessMemory函数,将新的常量值写入到指定的内存位置。 - **恢复页...
它将所有的布尔标志整合到一个单一的类中,提供统一的接口来访问和修改这些标志。这样做的好处有以下几点: 1. **减少耦合**:通过集中管理标志, FlagFactory减少了各个模块之间对标志的直接依赖,降低了代码的...
#### 二、MySql中访问限制的设置方法 MySQL允许管理员对不同用户设置访问权限,以增强数据库系统的安全性。以下是一些设置访问限制的方法: 1. **使用Grant命令授权** - **示例**: ```sql GRANT ALL ...
本文将详细讲解如何修改文件(文件夹)的属性,包括隐藏、只读、存档属性,以及如何调整创建时间、最后访问时间和最后修改时间。 一、隐藏属性 隐藏属性是一种保护措施,使文件或文件夹在常规视图下不可见。要修改...
这种方式的好处在于,可以根据需要灵活地选择不同的资源访问方式,而无需修改应用程序的核心逻辑。 #### ResourceLoader接口与ResourceLoaderAware接口 - **ResourceLoader接口**:此接口只有一个方法`getResource...
这些特殊标志位是预定义的,用户无法直接修改,但可以通过读取或根据它们的状态来控制程序的行为。 首先,SM0.0是一个常开位,始终为1,常用于初始化条件或循环开始的判断。SM0.1只在第一次扫描时为1,通常用于调用...
对于构造方法,我们传入`ACC_PUBLIC`访问标志,表示公共构造方法,`"<init>"`作为方法名,`"()V"`作为描述符,表示无参数的构造方法,最后两个参数可以留空,表示没有异常表。 3. **创建MethodVisitor实例**:`...
随着微软技术的发展,数据库访问技术经历了多次迭代,从早期的ODBC(开放式数据库连接)到OLE DB(对象链接与嵌入数据库),再到ADO(ActiveX Data Objects),直至ADO.NET,每一次进步都标志着新的数据访问模型和...
事件标志组是一种在任务间进行同步和通信的有效方法。它允许一个任务等待多个事件的发生,而这些事件可以由其他任务或者中断服务例程设置。当设定的事件发生时,等待的任务会被唤醒并继续执行。 1. **FreeRTOS核心...
访问能力表是另一种实现自主访问控制的方法,它提供给主体具有特定访问权限的能力标志,这些标志可以转移给进程,且在进程运行时可进行修改。然而,由于能力的自由转移,访问能力表不能实现完备的访问控制,这通常是...
访问能力表是另一种自主访问控制形式,它为每个主体提供不可伪造的能力标志,这些标志代表了对特定客体的访问权限。主体可以将这些能力转移给其他进程,但这种转移不受任何策略约束,可能导致无法完全追踪所有有权...
5. `Field`和`Method`:表示类的字段和方法,包含它们的访问标志、类型、名称、描述符等。 6. `InstructionList`和`Instruction`:用于构建字节码序列,可以精确控制方法的执行逻辑。 通过这些组件,我们可以实现...
在Windows API中,我们可以使用`RegOpenKeyEx()`函数打开一个注册表键,同时通过指定`KEY_SET_VALUE`或`KEY_ALL_ACCESS`访问标志来获取写入权限。如果需要修改权限,还需要调用`RegSetKeySecurity()`函数。这个函数...
设置系统标志位保护就是一种常见的防御策略,通过修改特定标志位来限制对驱动的非法访问或者异常操作。 易语言是一种中国本土的、以中文为编程语句的编程环境,旨在降低编程难度,让更多的人能参与到程序开发中。在...
本文将详细讲解如何使用C#来更改屏幕方向和修改分辨率,以满足特定场景的需求。 首先,我们需要引入必要的Windows API。Windows API提供了对操作系统底层功能的访问,例如控制显示器设置。在C#中,我们可以使用`...
在IT领域,文件时间修改器是一种实用工具,它允许用户更改文件或文件夹的元数据,特别是创建时间、访问时间和修改时间戳。这些时间戳在操作系统中存储了关于文件操作的重要信息,通常由系统自动记录。然而,在某些...
#### 四、移除桌面右击标志的方法 如果用户不希望每次点击桌面右键时看到“NVIDIA Control Panel”选项,可以通过以下步骤来移除它: ##### 方法一:使用命令行工具 1. **打开命令提示符**:按下`Win + R`组合键,...