当前位置: 首页 > 知识库问答 >
问题:

静态编程语言中的“更喜欢在该类上运行匕首处理器”

笪煌
2023-03-14

每当我在kotlin类中注入时,我都会在构建中得到这个注释(顺便说一句,我有一个混合了kotlin和java的Android项目)。

例如,在这个gradle任务:compileStagingDebugJavaWithJavac(StagingDebug是我的构建变体)之后,我得到以下消息:

"注意:生成成员注射器或工厂com.package名称XXX. CourseDiscoveryMapFragment.更喜欢在该类上运行匕首处理器。"

我的CourseDiscoveryMapFra的代码可以在这里看到:

class CourseDiscoveryMapFragment : Fragment(){

    @Inject
    lateinit var presenter: CourseDiscoveryMapPresenter

    lateinit var mapView: MapView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        val view = inflater.inflate(R.layout.fragment_discovery_map, container, false)

        MapsInitializer.initialize(activity)

        mapView = view.mapView
        mapView.onCreate(savedInstanceState?.getBundle(BUNDLE_KEY_MAP_STATE))

        (activity as BaseActivity)
                .activityComponent.inject(this)
}

我的ActivityComponent是:

@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

    //Exposed to sub-graphs.
    Activity activity();
}

所以,我用Java编写了dagger组件和模块,同时用Kotlin编写了dagger注入。

这是我应该担心的事情吗?

谢谢你。

共有1个答案

薛浩言
2023-03-14

恐怕你不能。为什么不用静态编程语言编写依赖模块?

要在java中编写依赖模块,您需要这样配置Gradle脚本:

 compile 'com.google.dagger:dagger:2.8'
 apt 'com.google.dagger:dagger-compiler:2.8'

但是,要使用静态编程语言编写依赖模块,您应该这样配置Gradle脚本:

compile 'com.google.dagger:dagger:2.8' 
kapt 'com.google.dagger:dagger-compiler:2.8'

dagger需要注释处理工具在编译过程中生成依赖代码。所以我想您只需要根据正确的语言使用正确的APT(注释处理工具)。

 类似资料:
  • 每当我对kotlin类进行注入(顺便说一句,我有一个包含kotlin和Java的混合android项目)时,我都会在构建中得到这条注释。 例如,在这个gradle任务:(StagingDebug是我的构建变体)之后,我会得到以下消息: “注意:正在为Com.PackageNameXxx.CourseDiscoveryMapFragment生成MembersInjector或Factory.更喜欢在

  • 根据 的来源,如果发生错误,将引发异常。 在的大多数示例中,没有使用try-catch,如下所示。为什么不需要错误处理?它安全吗?

  • 暴露0.27.1是否能够翻译以下SQL语句? 下面是我尝试的内容,但不幸的是,子查询独立于查询的其余部分工作。 此外,如果可能的话,那么如何使用别名从ResultRow获取结果?在这个示例之后,解决方案似乎是将整个子查询存储在单个变量中,并使用一个alias()方法调用,但这看起来很难看。有没有更好的方法?

  • 我有以下问题:-创建了几个模块来实现类,并用-我的Android应用程序正在使用检索这些类。但是由于某种原因,没有在

  • 我有一个Spring Boot应用程序,以Kotlin为语言,Gradle为构建系统。所以基本上,我试图用应用程序源代码和依赖项构建一个胖jar,可以使用Java命令行工具运行。 Gradle构建脚本: 如果我使用gradle命令运行项目,那么它运行正常。但是当我构建jar并尝试ti运行时,它会抱怨以下错误:- 应用.kt:- 不知道我到底哪里做错了什么。

  • 当结合使用SpringWebFlux和Kotlin协同程序时,我很难理解一个简单的RESTfulWS响应处理场景。假设我们在REST控制器中有一个简单的WS方法,该方法可能返回大量(数百万)响应“things”: 这正如人们所期望的那样:只要使用流媒体类型(例如“application/x-ndjson”),结果就会流式传输到客户端。在更复杂的服务调用中,也考虑了错误/警告的可能性,我希望返回以下