例如,在Java中,我可以自己编写getter(由IDE生成)或者在lombok中使用@Getter之类的注释 - 这非常简单.
然而,Kotlin 默认拥有getter和setter.但我无法理解如何使用它们.
我想说,就像Java一样:
private val isEmpty: String
get() = this.toString() //making this thing public rises an error: Getter visibility must be the same as property visibility.
Run Code Online (Sandbox Code Playgroud)
那么吸气剂如何工作?
我是Java新手,但对ActionScript 3有一些OOP经验,所以我试图依靠我所知道的东西进行迁移.
在ActionScript 3中,您可以使用get和set关键字创建getter和setter,这意味着您在类中创建方法并通过该类的实例的属性访问数据.我可能听起来很复杂,但事实并非如此.这是一个例子:
class Dummy{
private var _name:String;
public function Dummy(name:String=null){
this._name = name;
}
//getter
public function get name():String{
return _name;
}
//setter
public function set name(value:String):void{
//do some validation if necessary
_name = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我会name
在一个对象中访问:
var dummy:Dummy = new Dummy("fred");
trace(dummy.name);//prints: fred
dummy.name = "lolo";//setter
trace(dummy.name);//getter
Run Code Online (Sandbox Code Playgroud)
我怎么用Java做到这一点?
只是拥有一些公共领域是不可能的.我注意到有一种在方法前面使用get和set的约定,我很好.
例如,
class Dummy{
String _name;
public void Dummy(){}
public void Dummy(String name){
_name = name;
}
public String getName(){
return _name;
}
public void setName(String …
Run Code Online (Sandbox Code Playgroud) 在C#中,您可以使用属性使数据字段可公开访问(允许用户直接访问它),同时保留在这些直接访问的字段上执行数据验证的功能.Java有类似的东西吗?对于Instance,假设存在一个带有以下实现的C#类(见下文):
public class newInt{
public newInt(){...}
public int x{
get{ return this.x }
set{ this.x = isValid(value) }
}
}
private static int isValid(int value){...}
Run Code Online (Sandbox Code Playgroud)
类中的这个定义允许用户在从中检索值并为其赋值时"自然地"使用数据字段'x'.以下是它将如何在主要使用.
public class Test{
public static void main(String[] args){
newInt a = new newInt();
a.x = 50;
int b = a.x;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是...... java也可以这样做吗?如果是这样,它叫什么?
如何java.util.Date
用DateTimeFormatter
便携式格式化?
我不能用
Date in = readMyDateFrom3rdPartySource();
LocalDateTime ldt = LocalDateTime.ofInstant(in.toInstant(), ZoneId.systemDefault());
ldt.format(dateTimeFormatter);
Run Code Online (Sandbox Code Playgroud)
因为我担心使用ZoneId.systemDefault()
会引入一些变化.
我需要准确格式化我拥有的对象.
UPDATE
注意:时间就是时间.不是空间.时区是经度的非常粗略的度量,即空间.我不需要它.只有时间(和日期).
更新2
我编写了以下程序,证明,它Date
不仅包含正确的"即时":
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DataNature2 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateTimeString = "1970-01-01 00:00:01";
Date date = simpleDateFormat.parse(dateTimeString);
System.out.println("1 second = " + date.getTime());
}
}
Run Code Online (Sandbox Code Playgroud)
输出如下:
1 second = -10799000
Run Code Online (Sandbox Code Playgroud)
虽然它应该是
1 second = 1000
Run Code Online (Sandbox Code Playgroud)
如果Date
是"即时". …