假设我们有以下function来测试 fun loadData(dataId: Long, completion: (JsonElement?, Exception?) -> Unit { underlayingApi.post(url = “some/rest/url”, completion = { rawResult, exception -> val processedResult = processJson(rawResult) completion(processedResult, exception) }) } 我很清楚如何模拟,注入,存根和validation对underlayingApi的调用。 我的问题是:代码如何看起来像validation通过completion(processedResult, exception)返回的结果completion(processedResult, exception) ?
我是Java和Kotlin的新手。 最近当我在学习Kotlin的同时阅读教程。 我发现有一些Array/List混淆了我。 ArrayList , IntArray和Array什么不同? 我应该什么时候使用它们?
我从个人经验和这个讨论中了解到,当一个data classinheritance自另一个inheritance了类的字段的类不包含在数据类的copy函数中。 我感兴趣的是解决这个问题的选项。 具体来说,我有一个JPA @MappedSuperClass为我的JPA实体,这是data class ES。 在超类中,我设置了实体ID,至少到目前为止,我总是希望以相同的方式进行操作。 还有一些其他的事情我也想做,比如设置一个创建日期,最后更新日期等。 我到目前为止考虑的选项: 将ID,创建日期等复制粘贴到每个实体中。 优点:这很容易和复制方法的作品。 缺点:失败DRY,你不能处理所有使用共享超类的实体。 (但可以为此创建一个接口。) 重写超类的值,并将它们传递给超类。 您仍然需要将覆盖值复制粘贴到每个实体中,但至少您不必复制注释。 @Entity data class Comment( @Lob comment: String, override val id: Long = -1 ) : BaseEntity(id) @MappedSuperclass abstract class BaseEntity( @Id @GeneratedValue(strategy = GenerationType.AUTO) open val id: Long = -1 ) ??? 我什至不能想到第三个选项是有效的。 还有另一种方法吗? 使ID为var,并且每次都创建一个自定义的复制方法? 这听起来很丑。
我的代码数星星(5星)在firebase和我有问题,如果它实时更新它计数不正确 (现在的Firebase) = 1 = 2 = 0 = 0 = 0 而且改变firebase后[add 1. + = 1] = 3 = 4 = 0 = 0 = 0 但是,如果我重新启动应用程序更改为正常的结果 = 2 = 2 = 0 = 0 = 0 为什么MutableMap第二次添加新星图? class FireBaseRealTime { var listofStarsCounter : ArrayList = ArrayList(listOf(0,0,0,0,0)) var mDataBase : DatabaseReference = FirebaseDatabase.getInstance().getReference() var […]
我面临的问题是Matchers.anyObject()返回null 。 当用于模拟只接受不可为空的types的方法时,会导致抛出“不应为空”的exception。 `when`(mockedBackend.login(anyObject())).thenAnswer { invocationOnMock -> someResponse } 嘲笑方法: public open fun login(userCredentials: UserCredentials): Response
我需要编写一个比较字符串的Java比较器类,然而只有一个转折点。 如果它比较的两个字符串在字符串的开始和结尾是相同的,并且不同的中间部分是整数,则根据这些整数的数值进行比较。 例如,我需要下列字符串才能显示出来: AAA bbb 3 ccc bbb 12 ccc ccc 11 DDD eee 3 ddd jpeg2000 eee eee 12 ddd jpeg2000 eee 正如你所看到的,字符串中可能还有其他整数,所以我不能只用正则expression式来分解任何整数。 我想从一开始就走字符串,直到find一个不匹配的位,然后从最后走到最后find一个不匹配的位,然后比较中间位和正则expression式“[0-9] +”,如果比较,则进行数字比较,否则进行词法比较。 有没有更好的办法? 更新我不认为我可以保证字符串中的其他数字,可以匹配的数字,周围没有空格,或者不同的数字有空格。
Android Studio 3.0 在项目/ build.gradle: classpath ‘com.android.tools.build:gradle:3.0.1’ 在应用程序/ build.gradle: buildscript { repositories { maven { url ‘https://maven.fabric.io/public’ } } dependencies { classpath ‘io.fabric.tools:gradle:1.+’ } } apply plugin: ‘com.android.application’ apply plugin: ‘io.fabric’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-kapt’ apply plugin: ‘realm-android’ def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(rootProject.file(“app/keystore.properties”))) android { dataBinding { enabled = true } […]
我想通过点击一个Fragment的RecyclerView项目从Fragment到一个Activity 。 RecyclerView适配器是在单独的类中创建的,所以在setOnClickListener{}的部分中我必须编写Intent部分。 holder.itemView.setOnClickListener{ val intent = Intent(MainActivity.getActivity(),DetailsActivtiy::class.java) intent.putExtra(“ImageUrl”, uri) MainActivity.getActivity().startActivity(intent) } 您可能已经猜到的问题是MainActivty.getActivity() 。 我试图从Fragment通过onButtonClick而不是MainActivty.getActivity()我只写了activity ,它完美的工作,但它不适用于RecyclerView适配器,因为它是非活动类。 如何解决我的问题? 最好的,阿门。
我提出的问题是关于事件onQueryTextListener ,我声明它是以前在java中使用它,但是当我提交文本或当我更改文本时它不显示日志。 这是我的片段的代码: Fragment_producto.kt override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val vG = inflater!!.inflate(R.layout.fragment_producto, container, false) vG.recycler_producto.layoutManager = LinearLayoutManager(activity) vG.recycler_producto.hasFixedSize() vG.recycler_producto.adapter = Producto_Adapter(activity,this) vG.fab_scan.onClick { IntentIntegrator.forSupportFragment(this@Fragment_producto).initiateScan() } adapter = vG.recycler_producto.adapter as Producto_Adapter metodos.attachSwipeCheck(vG.recycler_producto) metodos.attachSwipeWrong(vG.recycler_producto) setHasOptionsMenu(true) return vG } override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { Log.i(TAG,”Llego a create optionsmenu”) activity.menuInflater.inflate(R.menu.menu_producto,menu) /*val […]
考虑一个普通的class Item和inheritance它的特定class Event : open class Item { fun copyFrom(item: T) { if (this is Event && item is Event) { owner = item.owner value = item.value } } } class Event : Item { open var owner = “” open var value = 0 } 感谢types推理,我们不必将物品投射到事件,我们可以直接访问owner和value 。 但是它表示该item是Ttypes,不能转换为item is Event子句。 我相信这不应该发生,因为这个条款在Java中是正确的? 编辑: 我意识到copyFrom实现应该在Event完成,但这只是为了演示types推断问题。