首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【基础】通过反射访问private成员和方法,private设计的

int num1; private String str1; public int num2; public String str2; public void doSoming() {...System.out.println("doSoming"); } private void doSomingPrivate() { System.out.println("doSomingPrivate..."); } } 注意代码中的通过dm.setAccessible(true)这样在调用方法时他不会检查方法的修饰是public还是private。...这样就实现了对私有方法的访问,那么问题来了,private的意义何在呢? 答: private并不是解决安全问题的,如果想让解决代码的安全问题,请用别的办法。...private的意义是OOP(面向对象编程)的封装概念。比如:有些地方会挂一个牌子“闲人免进”,但是没有警察看着,你进去也是可以的。对于本地化的文件,没有绝对的安全。

72710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何用反射突破private方法的限制

    反射作为Java的一个提高点,经常作为面试的内容之一。今天介绍一下最基本的反射的使用。 如何用反射来使用Class中的private方法。...private方法 我们知道被 private修饰的方法是无法被外部类调用的。但是有些时候当类所提供的方法不满足需求时,我们就得想办法来修改类的行为了。...当然实际项目中的场景会比这个复杂一些,我们只是用它来说明如何使用反射来调用 private方法。...对于 private,不仅需要用 getDeclaredMethod来获取,还需要用 setAccessible true来压制对 private的检查。...最后输出结果 java StudentMain name: Michael name: Michael age:15 总结 反射的作用又很多,上面只是举了个简单的例子如何通过反射来调用 private方法

    1.3K20

    面试官:private 可以通过反射访问,那么 private 的意义是什么?

    答案是有的,这就是java反射带来的便利。...利用反射访问类的私有属性及方法如下: /**  * @Description: 反射  * @author: Mr_VanGogh  * @date: 2019/2/20 下午2:52 */    public... class Reflect {    private String name;    private int age;    private Reflect(int age) {        this.age...缺点: 1:使用反射的性能较低; 2:使用反射来说相对不安全; 3:破坏了类的封装性,可以通过反射来获取这个类的属性,和私有方法。...---- Q:private修饰的方法可以通过反射访问,那么private的意义是什么? A:1、Java的private修饰符不是为了绝对安全设计的,而是对用户常规使用Java的一种约束。

    1K10

    面试官:private修饰的方法可以通过反射访问,那么private的意义是什么?

    Java 并发源码 来源:blog.csdn.net/u010164936/ article/details/87922082 ---- 在一个类中,为了不让外界访问到某些属性和方法,通常将其设置为private...答案是有的,这就是java反射带来的便利。...利用反射访问类的私有属性及方法如下: public class Reflect {       private String name;     private int age;       private...缺点: 使用反射的性能较低; 使用反射来说相对不安全; 破坏了类的封装性,可以通过反射来获取这个类的属性,和私有方法。 Q:private修饰的方法可以通过反射访问,那么private的意义是什么?...A: 1、Java的private修饰符不是为了绝对安全设计的,而是对用户常规使用Java的一种约束。就好比饭店厨房门口挂着“闲人免进”的牌子,但是你还是能够通过其他方法进去。

    41440

    面试官:private修饰的方法可以通过反射访问,那么private的意义是什么?

    在一个类中,为了不让外界访问到某些属性和方法,通常将其设置为private,用正常的方式(对象名.属性名,对象名.方法名)将无法访问此属性与方法,但有没有其他方法可以访问呢?...答案是有的,这就是java反射带来的便利。...利用反射访问类的私有属性及方法如下: /** * @Description: 反射 * @author: Mr_VanGogh */ public class Reflect { private...String name; private int age; private Reflect(int age) { this.age = age; }...缺点: 使用反射的性能较低; 使用反射来说相对不安全; 破坏了类的封装性,可以通过反射来获取这个类的属性,和私有方法。 Q:private修饰的方法可以通过反射访问,那么private的意义是什么?

    1.6K10

    C++获取private的变量-偷走private

    private提供了对数据的封装,使得private成员只能被类自身的成员函数以及类的友元访问,其他的函数或者类想要访问private成员只能通过该类所提供的set和get的方法进行访问, 或者返回其指针或引用...这样会提高封装性,帮助 const 成员函数产生 const 效果,并将悬空句柄产生的可能性降到最低,所以但这个方法并不是特别的好) 但如果你想获得一个类的private成员,但是该类的已经在项目被大量的使用...,或者是因为其他的原因,你没有办法添加get和set方法时,又应该如何获得该类的private成员呢?...),使用默认的private访问限制,那么该方法就无法达到目的了,比如这里的j就无法获得 2.降低代码的可读性,改变的一个关键字的意义,没有注意到这一点的程序员会产生困扰 3.将所有使用了private...),使用默认的private访问限制,那么该方法就无法达到目的了,比如这里的j就无法获得 2.降低代码的可读性,改变的一个关键字的意义,会没有注意到这一点的程序员照成困扰 3.将所有使用了private

    1.1K100

    搭建 Private NPM

    目前来说NPM生态事实上完成了前端模块化系统的必要准备,因此如果你厂的业务会有Private的需求,这个Point会有两个方案给你选择: 基于cnpmjs.org搭建 直接购买npm company服务...吐槽一下cnpmjs.org的Getting Start,《Deploy a private npm registry in 5 minutes》使用的是sqlite3,而exampless使用的是mysql...(建议:统一起来会比较好) 创建一个项目: $ mkdir web-private-npm && cd web-private-npm $ npm init -y $ npm i cnpmjs.org...创建数据库和表字段: $ mysql -uroot -e 'CREATE DATABASE private_npm'$ mysql -uroot 'private_npm' < ....大部分的时候我们基本就是在学习怎么配置它: module.exports = { admin: { 'icepy': 'xiangwenwe@gmail.com' }, database:{ db: 'private_npm

    64420

    分享调用Java private方法

    上周在修复bug时,发现Java类中某方法是private,且类中没有用到,第一感觉是方法多余。其实通过分析,发现原来Native Code会通过JNI调到此方法。...这也给自己启发,平时做Code refine时,如果方法没有被直接调用,一定要注意是否会有反射会调用到等,否则移除后,编译通过,但会有问题~ 虽然是小语法点,但很感兴趣,而且易被忽略。...Native Code调用Java类中private方法​ 例如JNI开发中,C可以反射调到Java的方法,例如通过GetMethodID等API,原因解释: ?...Java中通过反射也可以调用其他类的private方法 举例:​ ? 其中a是Test类中的private方法,通过getDeclaredMethod可以获得目标Class中的方法(不包含父类)。...参考:https://stackoverflow.com/questions/880365/any-way-to-invoke-a-private-method​ 最后分享个小的tip,Android中反射相关代码来自

    1.4K50

    既然Java反射可以访问和修改私有成员变量,那封装成private还有意义么?

    其他答案提到反射可以用SecurityManager来防止private被访问。...那么通过spring的IoC利用反射帮你注入一些private property是再正常不过的用法。 再比如,单元测试,你就想测一个private方法。但是因为private的缘故就是测不了。...于是你可以用反射绕开这个限制,开心的做测试。 有些人坚持“不应该测试private方法,而应该通过测试其他方法间接测试private方法,但并没有形成广泛的共识。这里不对这个问题展开。...我之所以敢用protected/default来代替private是因为现实当中非private不可的情景非常少见。...实际上,很多时候private带来的麻烦比起带来的好处要多,这是因为很多时候对OOP的误用造成的。OOP的误用造成了无谓的private,然后逼着你必须得绕开private

    1.5K20
    领券