Java 应用程序类可以是包私有的吗?

Java 应用程序类可以是包私有的吗?,java,android,android-studio,android-studio-3.1,Java,Android,Android Studio,Android Studio 3.1,我的应用程序类别代码: import android.app.Application; import android.os.Process; import com.squareup.leakcanary.LeakCanary; public class SampleApplication extends Application { public SampleApplication() { super(); } @Override publi

我的应用程序类别代码:

import android.app.Application;
import android.os.Process;

import com.squareup.leakcanary.LeakCanary;

public class SampleApplication extends Application {

    public SampleApplication() {
        super();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        //noinspection ConstantConditions
        if (LeakCanary.isInAnalyzerProcess(this)) {
            // This process is dedicated to LeakCanary for heap analysis.
            // You should not init your app in this process.
            return;
        }
        LeakCanary.install(this);
        // Normal app init code...
    }

    @Override
    public void onTerminate() {
        System.exit(0);
        Process.killProcess(Process.myPid());

        super.onTerminate();
    }
}
Android Studio 3.1金丝雀7-->分析-->检查代码-->确定:

声明访问权限可能会更弱

1警告:SampleApplication可以是包私有的


应用程序类可以是包专用的还是它的lint错误?

是的,它可以是包专用的。检查堆栈溢出中的问题,并阅读以了解如何控制对类成员的访问


进一步的解释是:从应用程序启动应用程序时不需要main方法(继承的类充当主类)。如果您正在使用它访问其他软件包,则需要将其公开。如果不是,您可以将其设置为包专用。

是,它可以是包private@UdeshUK,:“创建应用程序/包的流程时,应用程序类或应用程序类的子类在任何其他类之前实例化”。这是否意味着应用程序类必须是公共的?正如Alex在Java文档中所引用的——“一个类可以用修饰语public声明,在这种情况下,该类对所有的类都是可见的。如果一个类没有修饰语(默认值,也称为包私有),它只在它自己的包中可见”:“在创建应用程序/包的进程时,应用程序类或应用程序类的子类先于任何其他类实例化”。这是否意味着应用程序类必须是公共的?@AlexanderSavin从应用程序开始允许您在没有主方法的情况下启动应用程序(继承的类充当主类)。如果您使用它访问其他包,则它需要是公共的。如果不是,您可以将其设置为package-private。Alex Cuadron谢谢,我接受了您的回答,请将您的评论添加到您的answer@AlexanderSavin完成,感谢您选择答案:D