Tag: 科特林

Kotlin和新的ActivityTestRule:@规则必须公开

我正在尝试在Kotlin中为我的Android应用程序进行UItesting。 由于使用ActivityTestRule的新系统,我不能使它工作:编译正确,在运行时,我得到: java.lang.Exception: The @Rule 'mActivityRule' must be public. at org.junit.internal.runners.rules.RuleFieldValidator.addError(RuleFieldValidator.java:90) at org.junit.internal.runners.rules.RuleFieldValidator.validatePublic(RuleFieldValidator.java:67) at org.junit.internal.runners.rules.RuleFieldValidator.validateField(RuleFieldValidator.java:55) at org.junit.internal.runners.rules.RuleFieldValidator.validate(RuleFieldValidator.java:50) at org.junit.runners.BlockJUnit4ClassRunner.validateFields(BlockJUnit4ClassRunner.java:170) at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103) at org.junit.runners.ParentRunner.validate(ParentRunner.java:344) at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74) at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:55) at android.support.test.internal.runner.junit4.AndroidJUnit4ClassRunner.<init>(AndroidJUnit4ClassRunner.java:38) at android.support.test.runner.AndroidJUnit4.<init>(AndroidJUnit4.java:36) at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:417) at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.buildAndroidRunner(AndroidAnnotatedBuilder.java:57) at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:45) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) at org.junit.runner.Computer.getRunner(Computer.java:38) at org.junit.runner.Computer$1.runnerForClass(Computer.java:29) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:98) at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84) at […]

“更喜欢在Kotlin上运行匕首处理器”

每当我做一个注入到一个kotlin类(顺便说一下,我有一个混合的Android项目与kotlin和Java),我在构build中得到这个笔记。 例如,在这个gradle任务之后: compileStagingDebugJavaWithJavac (StagingDebug是我的构build变体),我得到这个消息: “注意:为com.packageNameXXX.CourseDiscoveryMapFragment生成一个MembersInjector或Factory,而不是在该类上运行匕首处理器。” 我的CourseDiscoveryMapFragment代码可以在这里看到: 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 […]

什么是Kotlin的Java静态方法的等价物?

Kotlin中没有static关键字。 在Kotlin中表示static Java方法的最好方法是什么?

Kotlin三元条件运算符

Kotlin中这个expression的等价物是什么? a ? b : c 这不是Kotlin中的有效代码。

什么Java 8 Stream.collect等价物在标准Kotlin库中可用?

在Java 8中,有Stream.collect ,它允许在集合上进行聚合。 在Kotlin中,这不是以同样的方式存在,除了可能作为stdlib中扩展函数的集合。 但是不清楚不同用例的等价关系是什么。 例如, JavaDoc for Collectors的顶部是为Java 8编写的示例,将它们移植到Kolin时,不能在不同的JDK版本上使用Java 8类,因此可能应该使用不同的方式编写。 就在线资源展示Kotlin集合的例子而言,它们通常是微不足道的,并没有真正与相同的用例相比较。 什么是真正符合Java 8 Stream.collectlogging的案例的好例子? 这里的列表是: 将名字积累到列表中 将名称累加到TreeSet中 将元素转换为string并连接它们,用逗号分隔 计算员工的工资总额 按部门分组员工 按部门计算工资总额 将学生划分为通过和失败 上面链接了JavaDoc中的细节。 注意: 这个问题是由作者故意写的和回答的( 自我回答的问题 ),所以对于常见的Kotlin话题的习惯性的回答是在SO中。 此外,为了澄清一些真正的古老的答案写为科特林的阿尔法,是不是今天的Kotlin准确。