Java 是否有一种轻量级的方法来获取上下文句柄以获取资源?

Java 是否有一种轻量级的方法来获取上下文句柄以获取资源?,java,android,dependency-injection,android-context,Java,Android,Dependency Injection,Android Context,我的ship类需要从resources文件夹中获取位图,因此我将其传递到构造函数中,如下所示: public Ship(Context context) { bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.myShipPic); ... 我希望不必传入上下文对象,让ship类更加独立,这怎么可能呢?我不认为我可以让飞船扩展一个活动类,因为那是为了创建窗口,对吗?我写了一篇关于为什么

我的ship类需要从resources文件夹中获取位图,因此我将其传递到构造函数中,如下所示:

public Ship(Context context) {
    bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.myShipPic);
    ...

我希望不必传入上下文对象,让ship类更加独立,这怎么可能呢?我不认为我可以让飞船扩展一个活动类,因为那是为了创建窗口,对吗?

我写了一篇关于为什么应该按需使用上下文的文章,所以这就是方法,你需要在构造函数或方法中传递上下文。不要静态地检索上下文,因为有一天你的应用程序会崩溃,然后你将不得不重构所有的代码以按需检索它。希望有帮助:)

我想我不能让飞船扩展活动类,因为那是用来创建windows的,没错。您当前的实现没有错,据我所知,没有其他方法可以做到这一点。请记住,如果要将
上下文
传递给其他不以循环引用结尾的对象,也要习惯从传递的上下文检索应用程序上下文,不要直接使用上下文。只要您的类不保留对传递的上下文的引用就可以了;您可以保留对应用程序上下文的引用。如下所示:
public Ship(@NonNull Context Context){Context-appCtx=Context.getApplicationContext();