为什么Kotlin允许在不同的文件夹(例如main和androidTest)中有两个具有相同名称和包的类?

我发现在Kotlin中,可能有两个同名的类,在同一个包中,但是其中一个在androidTest文件夹中,运行Espresso测试时,它将成为这个类中的一个。 这在Java下是不可能的,我想知道这是否是一个预期的行为,或者是由于其他原因。

在这里输入图像描述

在图像中,Kotlin中的AppCollaborator存在于androidTest和main中,AS不会抱怨,但是它关于JavaCollaborator。

事实是,这种行为是非常有用的,为了在测试(API等)期间加倍一些类,但我不知道我是否可以依靠它。

这是支持的,因为在output-build-folder中你有不同的子文件夹,例如

  • 建立/班/ JAVA /主
  • 建立/类/爪哇/测试
  • 建立/科特林类/主

您的类文件存储在不同的目标文件夹中,但是在运行时它们具有相同的完全限定名称,因为包名和类名相同。

这不是科林问题。 这是一个正常的名字冲突。 避免在测试和实现中使用相同的名称。 通常测试名称附有Test 。 在你的情况: JavaCollaboratorTest