package com.yada.yada
当我在没有package语句的com.yada.yada
中创建Java类'ss时,IntelliJ会发生什么? - RED“缺失包裹声明”。
当我在com.yada.yada
创建没有包语句的Kotlin文件时会发生什么? - “继续运行直到您的DI框架无法在运行时扫描您的deps”
为什么IJ包验证对Kotlin不是强制性的?我只是浪费了一个小时试图找出包裹扫描的错误只是为了意识到这是显示塞子。 Java 9拼图会为这些格式错误的文件/类引发的Kotlin混乱四倍而没有警告信息吗?嗯,你打赌它会!
请退回Kotlin的“警告”声明。附:注册/登录方法不足以让我自己访问Intellij bugtracker(我真的很生气,一次访问密码重置,1000个资源和980个我不记得或不关心的密码)因此在stackoverflow上公开。
如果有人要捍卫这种行为,请解释原因?也许我错过了一些东西,否则请回答open bug(最好是来自JetBrains的人),我会接受它。
答案 0 :(得分:3)
没有package语句的文件缺少检查警告是一个错误;相应的YouTrack问题为here。
答案 1 :(得分:1)
我不确定这篇文章是否合适,但为了回答实际问题,official documentation指出:
如果未指定包,则此类文件的内容属于 "默认"包没有名字。
由于使用Kotlin,您的文件不必位于与其软件包匹配的文件夹中,因此不必选择软件包声明,这样您就可以拥有按文件夹组织的文件,但是您没有#39 ; t希望将它们放在包中 - 这样它们就可以拥有相同的包,就好像它们没有嵌套在任何文件夹中一样,只是在项目的根目录中。
我确实承认,如果您的包裹声明与您的文件所在的文件夹不匹配,则会发出警告,但如果您完全省略包裹声明,则无法获得此声明。我认为这是故意的。
这通常不是问题,因为IDE会默认为您创建文件的文件夹生成相应的包声明。如果您使用IntelliJ,我不确定如何在没有包声明的情况下创建文件,除非您在根src
文件夹中而不是在包文件夹中执行此操作。