当我在某个kotlin项目中工作时,我感到很困惑,比如一个子类是实现了另一个父类,还是实现了一个接口?就像我正在使用一个jar中的一些接口和类,但我并不清楚这一点,有人可以向我解释一种解决这个问题的方法,因为我对kotlin并不熟悉。
例如:
类定义
abstract class Employee (val firstName: String, val lastName: String) {
abstract fun earnings(): Double
}
由其他类扩展的
abstract class Employee (val firstName: String, val last
我想问一下kotlin中的数据类。假设我有两个数据类,数据类A和数据类B,我想用数据类B包装我的数据类A。 这是继承还是内联类,我对Kotlin还是个新手。 data class A(
var x1:Float?,
var y1:Float?
)
data class B(
var x:Float?,
var y:Float?,
// other variables and methods
) 谢谢
在过去的几天里,我一直在做这个小代码翻译。这真的只是Kotlin语法难住我了。
Swift:
protocol BaseProtocol {
associatedtype VMType = BaseViewModel
var viewModel: VMType { get set }
}
public class BaseViewModel {
var moduleModel: ModuleModel
required public init(moduleModel: ModuleModel) {
self.moduleModel = modu
我正在玩预览版的AndroidStudio - 3.4 Canary 9。
我从Configure your project窗口中选择了默认登录活动选项,并提供了以下选项:
在Gradle同步上没有报告错误,但是在构建编译时它会产生以下错误:
Type mismatch: inferred type is LoginActivity but LifecycleOwner was expected
下面是它显示错误的代码片段:
// Type mismatch at this@LoginActivity, required LifeCycleOwner, found - LoginAc
我想要的是从一个用户超类继承的两个用户类型。当我通过用户名/密码对用户进行身份验证时,我并不关心他们是谁。然而,一旦他们开始发出请求,一旦登录,它就会变得很重要。
我不知道我应该使用什么继承类型和kotlin中的存储库来实现这一点。
@MappedSuperClass
open class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val Id: Long = 0
val username:String = ""
val password:String
我有一个函数类似于这样的类:
@Component
class UpdateService(
private val storeGateway: UpdateStoreGateway,
private val loadGateway: UpdateLoadGateway,
private val updateNotify: UpdateNotify,
) : UpdateStorage {
override fun delete(key: UpdateKey) {
if (loadGateway.loadByKey(key) != null)
storeGa
我有一堂课:
open data class Person(var name: String)
另一班:
data class Student(var reg: String) : Person("")
这给了我一个错误:
错误:修饰符“open”与“data”不兼容
如果我从Person类中删除数据,就可以了。
为什么kotlin打开和数据不兼容?
在关于函数和lambda的kotlin文档中找到了这个 class IntTransformer: (Int) -> Int {
override operator fun invoke(x: Int): Int = TODO()
}
val intFunction: (Int) -> Int = IntTransformer() 在这个page中,它说你可以像接口一样实现函数类型到类。它怎麽工作?你能给我一些每个部分的解释,并给我一个例子,这是如何做到的? 据我所知,IntTransformer扩展/实现了匿名函数,该函数以整型为参数和输出类型,但我仍然不知道它是如何
最近,为了学习Kotlin,我安装了IntelliJ IDEA。我已经建立了一个Kotlin项目,并将其配置为使用Kotlin插件的最新稳定版本(1.2.71-release-IJ2018.2-1)。
如果在项目文件(例如src/main.kt)中执行,下面的代码可以正常工作:
sealed class Port
class InputPort<in T> : Port()
class OutputPort<out T> : Port()
但是,如果我尝试在一个划痕文件中执行此操作,则会得到以下错误:
scratch.kts:2:25: error: cannot ac
我现在的课程如下:
class MyGcmListenerService : GcmListenerService() {}
GCMListenerService如下所示
public class GcmListenerService extends zzb {}
现在,我希望扩展到另一个构造函数。当我试图这么做的时候,
class MyGcmListenerService : GcmListenerService(), PushDataReceiver {}
我搞错了
超级打字员中只能出现一个类。此类型具有构造函数,因此必须在此处初始化。
PushDataReceiver如下所示
p
在我的代码中有一个场景,其中我希望一个类为两个不同类型实现接口,如下面的示例:
interface Speaker<T> {
fun talk(value: T)
}
class Multilinguist : Speaker<String>, Speaker<Float> {
override fun talk(value: String) {
println("greetings")
}
override fun talk(value: Float) {
// Do so
我把Kotlin和Java放在一起。我正在寻找一种从Kotlin扩展非静态嵌套类的方法,但我不知道如何实现。
来自
示例8.8.7.1-1。限定超类构造器调用
class Outer {
class Inner {}
}
class ChildOfInner extends Outer.Inner {
ChildOfInner() { (new Outer()).super(); }
}
我试过像下面这样做,但这在科特林并不管用:
class ChildOfInner(): Outer().Outer.Inner()
(注意:下面有一个潜在的破坏者- Kotlin Koans )
给定一个高阶函数,该函数采用如下所示的函数文字:
fun <K, V> buildMap(build: MutableMap<K, V>.() -> Unit): Map<K, V> {
// How does java.util.HashMap satisfy the MutableMap interface?
// Does Kotlin support ducktyping?
val map = HashMap<K, V>()
map.bu
我有一个类,它有一个接口作为成员。
Class A {
IProp property;
}
在运行时,我们使用实现IProp的一个具体类分配属性。说,
A a = new A();
a.property = new IPropImpl();
现在,如果我有对象a,则使用反射获得字段:
Field[] fields = a.getDeclaredFields();
但是对于字段property,类型作为IProp返回。我想得到分配给它的混凝土类型。(可能有多种混凝土类型。我想得到分配到这个领域的那一个)。
有人能帮我吗?
我的IVehicle接口上有一个名为Color的属性。如果我希望实现该接口的每个车辆都有一个默认颜色"Red“,我该如何实现呢?这里还需要另一个关卡吗?
public interface IVehicle
{
string Color { get; set; }
void Go();
void Stop();
}
public class Bmw : IVehicle
{
#region IVehicle Members
public string Color
{
get
{