提问人:Snakecatcher 提问时间:7/12/2023 更新时间:7/12/2023 访问量:98
是否可以不覆盖界面中的方法?
Is it possible not to override methods from the interface?
问:
我有一个班级:
class CameraFragment : Fragment() {
interface CameraResultReturner {
fun returnCameraBarcode(result: String)
fun returnCameraBitmap(result: Boolean)
fun returnCameraBitmapAndBarcode(result: String, bitmap: Bitmap?)
}
有一个类接收来自 CameraFragment 的响应
class TaskLinkFragment : Fragment(R.layout.fragment_task_link),
CameraFragment.CameraResultReturner,
BarcodeInfoFragment.BarcodeInfoListener,
BarcodeListFragment.BarcodeListListener {
因此,在TaskLinkFragment中出现了三个方法
override fun returnCameraBarcode(result: String) {
//does nothing
}
override fun returnCameraBitmap(result: Boolean) {
//does nothing
}
override fun returnCameraBitmapAndBarcode(result: String, bitmap: Bitmap?) {
//does something
}
是否可以删除此类中未使用的方法,因为它们在其他类中使用?
什么也没想到。
答:
0赞
Atick Faisal
7/12/2023
#1
您可以将修饰符添加到未使用的函数中。这使得函数可以替代。open
interface CameraResultReturner {
open fun returnCameraBarcode(result: String)
open fun returnCameraBitmap(result: Boolean)
fun returnCameraBitmapAndBarcode(result: String, bitmap: Bitmap?)
}
评论
0赞
Snakecatcher
7/12/2023
不幸的是,它给出了一个错误。工作:stackoverflow.com/a/76666144/17474067
1赞
Oscar Emilio Perez Martinez
7/12/2023
#2
我建议您不要添加 open 修饰符,而是为这些函数添加默认实现
interface CameraResultReturner {
// Empty implementation
fun returnCameraBarcode(result: String) = Unit
// Empty implementation
fun returnCameraBitmap(result: Boolean) = Unit
// Empty implementation
fun returnCameraBitmapAndBarcode(result: String, bitmap: Bitmap?) = Unit
}
class MyCameraResultFragment : CameraResultReturner {
// No need to override the methods, as they already have empty implementations
}
评论
0赞
Snakecatcher
7/12/2023
多谢!它正在工作!
评论