android - 为具有泛型的类创建 Espresso Matcher
问题描述
我正在尝试为浓缩咖啡创建一个新的匹配器,以便能够选择一个列表项。这适用于像 Office 这样的简单类。请参阅此示例。
private fun withOffice(title: String): Matcher<Any> {
return object : BoundedMatcher<Any, Office>(Office::class.java) {
override fun describeTo(description: Description?) {
description?.appendText("with title '$title'");
}
public override fun matchesSafely(office: Office): Boolean {
return office.name == title
}
}
}
然而,当引入泛型时,事情变得更加困难,就像在这个类中一样。
class KeyTranslationPair<F, S> extends Pair<F, S>
试图创建一个这样的匹配器
private fun withCompanyType(companyType: CompanyType): Matcher<Any> {
return object : BoundedMatcher<Any, KeyTranslationPair<CompanyType, String>>(KeyTranslationPair<CompanyType, String>::class.java) {
override fun describeTo(description: Description?) {
description?.appendText("with companyType '$companyType'");
}
public override fun matchesSafely(keyTranslationPair: KeyTranslationPair<CompanyType, String>): Boolean {
return keyTranslationPair.key == companyType
}
}
}
导致以下错误
我的假设是 kotlin 将事情与 java 类型系统混为一谈。也许有人在这里有一个想法。
解决方案
那是因为KeyTranslationPair<CompanyType,Strnig>
不是一个类,什么时候说类意味着KeyTranslationPair::class.java
,所以,你可以这样做:
return object : BoundedMatcher<Any, KeyTranslationPair<*,*>>(KeyTranslationPair::class.java)
你是说你不知道里面是什么KeyTranslationPair
,因为它是 aGeneric
你必须将其更改matchesSafely
为:
override fun matchesSafely(item: KeyTranslationPair<*, *>?): Boolean {
return item?.key == companyType
}
您还可以检查是否Key
是CompanyType
做的一个实例:
override fun matchesSafely(item: KeyTranslationPair<*, *>?): Boolean {
if(item?.key is CompanyType){
return item.key == companyType
}
return false
}
希望能帮助到你。
推荐阅读
- java - 如何访问 arrayList 内的类的实例
- ios - 在 iOS 蓝牙设置中使 UWP 应用程序可发现
- python - 如何让 2 个“朋友”比较,看看他们是否在彼此的朋友列表中?
- java - Oracle rdb - 找不到 rdbthin-7.4.3.1-jar。谁能提供下载链接
- javascript - 无法在 Invertase 的 React Native Firebase 中使用 Cloud Firestore 查询分配变量值
- walmart-api - Walmart IO API:未订阅服务名称
- typescript - 打字稿联合类型到单个映射类型
- chromecast - 如何在基于网络的发件人上接收来自 Google Cast Receiver 的消息?
- python - 如何重塑测试数据框,使维度与训练和预测工作中使用的维度相同?
- python - 使用 Imagemagik 将未嵌入字体的 pdf 转换为 png