C#属性(我的意思是get和set方法)是一个非常有用的功能.java也有类似于C#属性的东西.我的意思是我们如何在java中实现类似下面的C#代码:
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
Run Code Online (Sandbox Code Playgroud)
先感谢您
Kotlin自动生成它的吸气剂和设置,但我从不参考它们?另外,在Kotlin中编写自定义getter/setter的正确方法是什么?当我说myObj.myVar = 99我觉得我是直接访问myVar的公共领域myObj?这里到底发生了什么?
在Kotlin接口中,使用空的get/set语句声明属性是否重要?
例如...
interface ExampleInterface {
// These...
val a: String
get
var b: String
get
set
// ...compared to these...
val c: String
var d: String
}
Run Code Online (Sandbox Code Playgroud)
我很难注意到差异.
在实现接口时,如果我对属性使用getter/setter,或者直接设置值,似乎并不重要.
当通过java访问这些时,val它们都有getter,而且var它们都有getter和setter.
public void javaMethod(ExampleInterface e) {
e.getA();
e.getB();
e.setB();
e.getC();
e.getD();
e.setD();
}
Run Code Online (Sandbox Code Playgroud) In Kotlin, var is mutable and val should be assigned only once.
However, consider val foo in the following example:
var counter = 0
val foo: String
get(){
counter++
return "val$counter"
}
fun main(): String {
val a = foo
val b = foo
val c = foo
return "we got: $a $b $c"
// output: we got: val1 val2 val3
}
Run Code Online (Sandbox Code Playgroud)
The get() method is executed each time we try to access foo, resulting different values for val …
嗨,我正在用Kotlin制作一个应用程序,我发现我可以同时使用
textView.setText(str)
Run Code Online (Sandbox Code Playgroud)
和
textView.text = $str
Run Code Online (Sandbox Code Playgroud)
我想知道我应该使用什么以及它们之间的区别。谢谢你。
之前已经问过这个问题,但即使在阅读之后:
而且我仍然不明白如何解决我的问题。
当使用来自另一个类的 get 方法访问类中的变量时,我收到值 null。
如何接收正确的值而不是 null?
这是我尝试从其中获取变量的类(不包括所有内容)。
public class RLS_character_panel extends javax.swing.JPanel implements ActionListener, ItemListener {
private String name1 = "hello";
public String getName1() {
return name1;
}
public void setName1(String name1) {
this.name1 = name1;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试获取值的课程。这个类扩展了 JFrame 以便我可以添加一个显示变量的 JPanel。( JPanel 是另一个名为: RLS_strid_panel 的类,它被添加到这个框架上)。
public class RLS_strid_java extends JFrame {
RLS_character_panel test = new RLS_character_panel();
String name1 = test.getName1();
RLS_strid_panel p = new RLS_strid_panel(namn1);
// constructor
public RLS_strid_java(String titel) {
super(titel); …Run Code Online (Sandbox Code Playgroud) class Sample1 {
private var test = ""
get() = field
set(value) {
field = value
}}
Run Code Online (Sandbox Code Playgroud)
这是我的课。我想将该属性保留为私有,并且必须通过getter和setter访问该属性。
var sample1 = Sample1()
Run Code Online (Sandbox Code Playgroud)
我试图创建一个对象并访问该属性,但是失败了。当我浏览文档时,我会发现一件有趣的事:“ Getters始终具有与属性相同的可见性”。链接
Kotlin的正确方法是什么?