java - 为什么有些类在 Android 支持库中不公开?

标签 java android android-support-library android-design-library

为什么 Android 库中包含的一些类不是公开的?对我来说,这没有任何实际意义,基本上只是引入了一个障碍,无法为最近发布的一些漏洞百出的小部件开发临时修复程序。

具体来说,我说的是 Android Design Support Library 中的 TextInputLayout . 例如,如果我想制作一个覆盖构造函数中某些代码的自定义小部件,我不能这样做,因为 CollapsingTextHelper 不是公共(public)类。我将不得不下载源代码并将相关类复制到我的项目中,但实际上并没有什么可以阻止我这样做。那么一开始不公开它有什么意义呢?

据我了解,随着库的不断更新和改进,您只需添加 @Deprecated 注释即可指示特定类已过时或已过时,并且仍然存在以防止遗留代码从打破。
我知道库简单地公开所有类是没有意义的,但我不明白为什么不应该公开对实现小部件必不可少的类。当其中一个类被更好的版本替换时,或者当小部件以完全不同的方式实现时,为什么他们不能添加 @Deprecated 注释?

最佳答案

简而言之 - 通过将这些类设为非公开,他们保留随时更改/删除此类的权利,而不会破坏任何客户(您的)代码。

看看已经有多少 @Deprecated 方法/类,您就会明白为什么这很重要。

关于java - 为什么有些类在 Android 支持库中不公开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083194/

相关文章:

java - 从 html 页面和 javascript 调用 java webservice

java - 如何在 Mac 上恢复已删除的 java 文件?

android - 如何在 xml 选择器中设置 alpha

Android Studio,不匹配支持库版本错误,但不知道它在哪里指定

android - 在 PreferenceFragmentCompat 中动态膨胀首选项

java - 替换String中的$符号

java - 如何定义一些奇怪的 java 进程的主机?

java - 错误 : Connecting MySQL database in Android app using PHP

Android webview 保留以前的页面内容而不重新加载?

android-studio - 如何更新 com.android.support :exifinterface version