java – 为什么这些函数是抽象的,在哪里找到它们的主体(具体实现)?

《java – 为什么这些函数是抽象的,在哪里找到它们的主体(具体实现)?》

我想知道函数getPackageInfo的实现(因为我想知道它们所指的包存储在哪里),所以我去了this看源代码,但只找到了一个抽象方法.

public abstract PackageInfo getPackageInfo(String packageName, int flags) throws NameNotFoundException;

方法的实施在哪里?

最佳答案 getPackageInfo方法的实现在com.android.server.pm.PackageManagerService中

 @Override
public PackageInfo getPackageInfo(String packageName, int flags, int userId) {
    // reader
    synchronized (mPackages) {
        PackageParser.Package p = mPackages.get(packageName);
        if (DEBUG_PACKAGE_INFO)
            Log.v(TAG, "getPackageInfo " + packageName + ": " + p);
        if (p != null) {
            return generatePackageInfo(p, flags);
        }
        if((flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0) {
            return generatePackageInfoFromSettingsLPw(packageName, flags, userId);
        }
    }
    return null;
}

你可以看看here

点赞