gpt4 book ai didi

java - 如何访问同一包但不同 jar 中父类的包本地字段?

转载 作者:行者123 更新时间:2023-12-01 10:14:48 24 4
gpt4 key购买 nike

我正在尝试覆盖 CursorLoaderpublic Cursor loadInBackground() 方法,所以我在我的应用程序中尝试了:

package android.content;

public class DistinctCursorLoader extends CursorLoader {
@Override
public Cursor loadInBackground() {
// I need to use mUri, mProjection, mSelection, mSortOrder

但是 CursorLoader 的这些“包本地”字段对于 DistinctCursorLoader 是不可见的,即使它们位于同一个包中(尽管显然不在同一个 jar 中)

这来自 CursorLoader.java(android 的源代码):

package android.content;

public class CursorLoader extends AsyncTaskLoader<Cursor> {
Uri mUri;
String[] mProjection;
String mSelection;
String[] mSelectionArgs;
String mSortOrder;

最佳答案

您不能简单地通过将自己置于 Android 平台的命名空间中来对其进行更改。您在 IDE 中看到的 Android 平台组件的源代码是为了方便您了解该平台,而不是访问其非公共(public) API。

android.* 中的所有类在运行时都存在于设备本身上。它们没有 bundle 到应用程序中。因此,首先,您无法保证这些特定字段会存在,因为 Android 版本之间的情况可能会发生变化。其次,这些字段在发送到设备之前可能已被重命名或混淆,因为它们不是公共(public) API,并且不期望由应用代码直接访问。

如果你感觉很叛逆,你可以尝试在运行时使用反射来查找和更改隐藏的API,但这肯定会给你带来将来的问题。所以不要这样做。

关于java - 如何访问同一包但不同 jar 中父类的包本地字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35964331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com