如果一组内部类是包含类的外部抽象的唯一实现(子类),那么如何实例化它们? abstract class A { inner class A1 : A() inner class A2 : A() } 换句话说, 构造A1或A2的实例的语法是什么? 编辑: …在A类的身体之外
我正在创建一个抽象工具类,在另一组外部类(不受我控制)上运行。 外部类在概念上在界面的某些点上是相似的,但是对于访问它们的类似属性具有不同的语法。 他们也有不同的语法来应用工具的操作结果。 我用@hotkey根据这个答案创建了一个带有内部类的数据类。 这是generics的问题:外部类基本上是元素的容器。 每个类的容器types是不同的。 某些容器具有固定的元素types,而其他容器具有通用元素types。 我很难将这个generics概念in vs, out ,协方差与这个模型的逆变。 下面是一个简单的例子,使用CharSequence和List的切片,就类似于这个generics, // *** DOES NOT COMPILE *** data class Slicer(val obj: C, val beg: Int, val end: Int) { // C is container type; E is element type // but unsure how to apply in/out properly inner abstract class SObj{ abstract val len: Int […]
我从名为UserViewHolder的官方示例中了解了ViewHolder的用法。 public class UserViewHolder extends RecyclerView.ViewHolder { static UserViewHolder create(LayoutInflater inflater, ViewGroup parent) { UserItemBinding binding = UserItemBinding .inflate(inflater, parent, false); return new UserViewHolder(binding); } private UserItemBinding mBinding; private UserViewHolder(UserItemBinding binding) { super(binding.getRoot()); mBinding = binding; } public void bindTo(User user) { mBinding.setUser(user); mBinding.executePendingBindings(); } } 我要写许多ViewHolder类,所以我希望我可以写一个抽象类。 在Java中,它看起来像: public abstract static class BaseViewHolder { abstract […]
我想出了以下问题: 我的主活动代码: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // … // ERROR: Cannot create instance of an abstract class var db = DataBase().getDataBase(this) // … } } 房间数据库: @Database(entities = arrayOf(DataBaseUser::class), version = 1) abstract class DataBase : RoomDatabase() { val DB_NAME : String = “DataBaseUser” private lateinit var INSTANCE […]
假设KeyAdapter是一个抽象类,有几个可以被覆盖的方法。 在Java中我可以这样做: KeyListener keyListener = new KeyAdapter() { @Override public void keyPressed(KeyEvent keyEvent) { // … } }; 如何在Kotlin中做同样的事情?