我正在将Java应用程序重写为Kotlin应用程序。
除了API请求,所有的工作都很好。
要将DTO存储在数据库中,除了从API检索到的id字段外,还有cityId字段(在那里称为id )。
由于某种原因,@JsonIgnore不适用于DTO id字段。
build.gradle
// plugins
id 'org.springframework.boot' version '2.2.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEA
这个例子来自我正在做的Kotlin课程:
class Car {
var speed: Int = 0
get() = field
set(value) {
field = value
}
}
如果我喜欢使用这样的主构造函数:
class Car(var speed: Int)
,在这种情况下,我要怎么写getter / setter呢?
我是kotlin的新手,不能理解getter和setter在kotlin中的行为,所以如果我将setter设置为private。那么更新值的方法是什么呢?
package foo
class Person() {
var name: String = "defaultValue"
private set
}
我看到了这个`
但此链接为Java(安卓)语言。我想使用kotlin语言...`我正在使用OkHttp库
val client = OkHttpClient()
val time = client.connectTimeoutMillis() // it's get only methood but i looking for method for set Timeout
我的问题是我找不到如何为Kotlin设置连接超时和套接字超时。
假设我有这样的界面:
interface Things {
fun size(): Int
}
我想子类一个List并实现这个接口。
class Cars : ArrayList<String>, Things {}
我得到一个编译错误:
继承的平台声明冲突:以下声明具有相同的JVM签名(size()I):兴趣():Int被定义为
我可以通过将size合同更改为var隐式getter来避免编译错误:
interface Things {
var size: Int
}
但是,我得到了一个长而复杂的错误,它看起来像是运行时错误(IllegalStateExcept
我一直在看Kotlin的官方教程。我遇到了一个名为Backing 的主题
上面写着,
Kotlin中的类不能有字段。但是,在使用自定义访问器时,有时需要有一个支持字段。为此,Kotlin提供了一个自动支持字段,可以使用字段标识符访问该字段:
var counter = 0 // the initializer value is written directly to the backing field
set(value) {
if (value >= 0) field = value
}
我从得到了上面的信息
我的问题是,“字段”是否指向反变量?
我有这样一堂课
class Square(var width: Int, var height: Int) {
var color : String = "red"
}
正如我所理解的,Kotlin的编译器将考虑宽度、高度和颜色是类Square的属性,因此它将自动为这些属性生成setter和getter。
使用属性颜色,我想它的吸气者和策划者应该喜欢这个。
var color : String = "red"
get() = field
set(value) { field = value}
但宽度和高度属性的默认设置器和getter如何?这些属性没有初
我使用Intellij将Java代码转换为Kotlin。
我的Java类:
public class Test {
private String mName;
public String getName() {
return mName;
}
public void setName(String name) {
this.mName = name.trim();
}
}
转换科特林级:
class Test {
var name: String? = null
private set
我试图在我的Kotlin模型类中生成Getters和Setters,而不需要手动编写代码,但是这些选项没有显示在Android的generate菜单中。
我的模型类(Kotlin)
import com.google.gson.annotations.Expose
import com.google.gson.annotations.SerializedName
public class EventsRoadSummaryAPINodeModel {
@SerializedName("road_name")
@Expose
var road_name
我正在使用Kotlin和Realm来编写数据类
data class AuthToken(val register: Boolean,
val token: String,
val tokenSecret: String,
val user: AuthUser)
我必须将数据保存到db,所以我使用Realm来保存它。但正如我们所知,如果我想将类保存到Realm,AuthToken类必须扩展RealmObject。
这就是问题所在,Kotlin说数据类不能扩展类。所以我放
我正在学习Kotlin,目前使用Fedora 25 OpenJDK 8和Kotlin 1.1。
我从Kotlin网站复制了这个示例:,并更改了get操作符。
class Example {
var p: String by Delegate()
}
class Delegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
// My implementation
return property.getter.call(thisRef) as
考虑一下这个Kotlin代码:
var parent: T? = null
get() = if (isParent) this as T else field
set(value) { field = if (value == null) null else value.parent }
val isParent: Boolean
get() = parent == null
var description = ""
get() = if (isParent) field else parent!!.description
set(
我有以下数据类,它将从API检索数据:
data class Users(
@field:[Expose SerializedName("id")]
val id: Int)
我只是想知道@field:是什么意思。
通常情况下,我总是这样做:
data class Users(
@Expose
@SerializedName("id")
val id: Int)
我理解“暴露”和“serializedName”的含义。
我只问几个问题:
我对@field:[]最好的猜测是采取一组注释
考虑以下Java类:
public final class Example {
private int value;
public int getExampleValue {
return value;
}
public void setExampleValue(int value) {
this.value = value;
}
}
Kotlin将这些get/set访问器方法合成为属性:
val example = Example()
example.exampleValue = 0 // setExampleVa
class Sample1 {
private var test = ""
get() = field
set(value) {
field = value
}}
这是我的课。我希望将该属性保持为私有属性,并且必须通过getter和setter访问该属性。
var sample1 = Sample1()
我试图创建一个对象并访问该属性,但失败了。当我浏览文档时,我会发现一件有趣的事情:"Getters始终具有与属性相同的可见性“。
kotlin的正确方法是什么?
{
"batchcomplete": "",
"warnings": {
"main": {
"*": "Unrecognized parameter: rvprop."
},
"extracts": {
"*": "\"exlimit\" was too large for a whole article extracts request, lowered to 1."
我在用Kotlin做开发。当我到达官方Android教程的片段部分时,我看到了supportFragmentManager。它可以作为Kotlin中的变量使用,而在java中,我们可以调用它的等效方法getSupportFragmentManager()。
我想知道supportFragmentManager变量是在哪里定义的,因为我看不到任何类似于该名称的变量声明,但是单击该变量将我带到fragmentActivity.java类中的以下方法。
/**
* Return the FragmentManager for interacting with fragments associate
我是Kotlin的初学者!我们能用Kotlin解释这些类之间的区别吗?
class Person(val name: String, val age: Int)
class Person(name: String, age: Int)
class Person(var name: String,var age: Int)
以及如何在Kotlin中为数据类添加getter和setter?
我试图在EditText中设置文本,但它说:
Type mismatch.
Required: Editable
Found: String
我的代码如下:
String name = "Paramjeet"
val nametxt = findViewById (R.id.nametxt) as EditText
nametxt.text = name
不要说使用setText,因为我使用的是kotlin,而不是Java。
Kotlin可以自动为主构造函数参数创建getter(这很棒),默认情况下,所有这些getter都是final (而不是open)。我有一个类(在Kotlin中): open class SongCategory(val id: Long,
val type: SongCategoryType,
val name: String? = null,
var displayName: String? = null,
我已经开始学Kotlin了。我目前的背景是Java。我发现Kotlin中的类属性与Java中的类字段非常不同,尽管它们看起来很相似。在他的问题中,我想把这两者之间的所有技术分歧集中起来。这就是我已经知道的:
Java字段和隐藏vs Kotli属性和重写
(实际上,这促使我写了这篇文章):
在Java中,基类的字段由派生类中同名的字段隐藏,因此使用哪个字段取决于对包含该字段的对象的引用的类型,而不是对象本身的类型(字段不像方法那样被覆盖,因此它们不依赖于对象的运行时类型)。例如,这段代码:
class A {
public String name = "A";
p
所以我有一个抽象的课堂作文,有两个孩子:一个是一首歌,一个是一张专辑(一组曲目)。
class Composition(val name: String, ...)
class Track(name: String): Composition(name)
class Album(name: String, val tracks: List<Track>): Composition(name)
到现在为止还好。现在,我有了增加的持续时间。它在构图上是抽象的,所以我可以在孩子们中重写它:
abstract class Composition(...){
abstract fun
我使用的是firebase,这是我的数据类定义:
data class ClaimOrder(val address: String? = null,
val amount: Long = 0L,
val isProcessed: Boolean = false,
val onCreate: kotlin.Any? = ServerValue.TIMESTAMP)
但是,在日志上,我看到以下警告:W/ClassMapper: No setter/field for isProcessed
我在Kotlin网站上读到关于关于Delegated properties的文章。
import kotlin.reflect.KProperty
class Example {
var p: String by Delegate() // 1
override fun toString() = "Example Class"
}
class Delegate() {
operator fun getValue(thisRef: Any?, prop: KP