java @hide标签的学习

这几天在看安卓系统任务列表样式的源码时,发现一个public的静态内部内的public方法无法被外界调用,起了个怪了,代码如下:

 

ActivityManager.TaskDescription taskDescription = new ActivityManager.TaskDescription("", 00);
        getActivity().setTaskDescription(taskDescription);
        taskDescription.setLabel("测试APP");

public的方法为啥不能调用呢?

摸索了很久不得其解,最后问了几个朋友,有个基友给出了答案,牛x!

原来Java类、成员变量和方法注释有个@hide标签,作用就是不让外界调用public的此类、成员变量或者方法,接着再看,

 看到了吗?代码行数少了几行,还有一个竖杠,哈哈,然后把鼠标移动到行数空间或者竖杠位置,

 行数空间那里出现了一个笔的图标,点它,

 @hide标签出现了,隐藏太深了;

然后我也写了一个类,试试这个牛X闪闪的标签呢,代码如下:

package co.coo.cooo;

public class Test {
    /**
     * @hide
     */
    public String s = "";

    /**
     * @hide
     */
    public static class TT {

        /** 
         * {@hide} 
         */
        public String ss = "";

        /**
         * @hide
         */
        public void sett() {

        }
    }
}

 发现并没有卵用,完全无法生效;

后来经过研究,原来需要把Java文件打包成.jar文件,依赖使用,于是,打成jar,

直接包含此文件的目录压缩为.zip文件,然后重命名为.jar,然后让项目依赖,如图:

 

看到了吗?@hide生效了;

为啥需要这么一个标签呢?

直接private修饰不行吗?

据说,这是为了给系统APP调用的类、成员变量和方法,外界是不允许调用的;

有没有一种方案可以调用呢?

有,反射!

好了,又可以愉快玩耍了。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值