zoukankan      html  css  js  c++  java
  • Java反射在Android中的使用

    转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6606687.html

    做Java开发或者安卓开发的同学经常都会遇到这样一个问题,如果我们想调用A类里面的一个私有方法B,然后在C类中使用。通常的直接调用方法是行不通的。也有人说那就把私有的变为公有的就完事了呗,但是凡事都有解决方案,不用改为公有。

    进入正题:

    有这样一段代码

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            method();
        }
    
        private void method() {
    
        }
    }

    现在我们想用Junit测试MainActivity中的私有方法method

    如果我们想测试MainActivity里面的私有方法method,直接调用是行不通的,这时候就用到了Java反射(Reflect)

    首先,创建测试文件MainActivityTest,继承AndroidTestCase

    public class MainActivityTest extends AndroidTestCase {}

    然后,创建测试类testMethod

    public void testMethod() throws Exception {}

    完整测试代码

    public class MainActivityTest extends AndroidTestCase {
    
        public void testMethod() throws Exception {
    
            MainActivity activity = new MainActivity();
            Method testMethod = MainActivity.class.getDeclaredMethod("method");
            testMethod.setAccessible(true);
            testMethod.invoke(activity);
        }
    
    }

    至此,我们就可以使用MainActivity中的私有方法method了!

    关注我的新浪微博,获取更多Android开发资讯!

    关注科技评论家,领略科技、创新、教育以及最大化人类智慧与想象力!

  • 相关阅读:
    插入排序Java实现
    WMI控制IIS(2)
    WMI控制IIS
    C语言中用qsort()快速排序
    list_for_each引起的问题
    c++数组地址
    Valgrind 使用简单说明检查内存泄露
    firefox 在UBUNTU下编译
    内存泄漏检测umdh
    ubuntu GIT 安装与使用
  • 原文地址:https://www.cnblogs.com/cnwutianhao/p/6606687.html
Copyright © 2011-2022 走看看