在不使用enum的情况下,在java中定义常量,一般可以通过如下方式定义:
private static final String name = "tom";
public static final String name2 = "tom2";
这两种方式定义的区别是第一种方式,只有常量所在的类的方法可以访问,不管是静态还是非静态方法都可以访问。第二种方式则是全局的,所有类都可以访问。所以两种方式应对两种场景,private和public关键字可以很好的完成这个任务。
而在kotlin中,由于没有static关键字,必须使用const关键字,其对应的就是java的static关键字。但是const关键字必须使用在object类中,那如何实现定义局部(常量所在类内部,仅供本类使用)和全局的常量的?如果要定义全局常量,可以定义一个object类:
object ConstantTest {
const val name = "tom"
}
而如果想在类内部定义局部常量,可以使用半生对象,在伴生对象中的常量,一定要使用private const修饰,如果不加private, 默认还是public,就称为一个全局常量。
class LocalConstantTest{
companion object{
private const val name = "tom"
}
fun doSomthing(){
println("$name, How are you?")
}
}
fun main(){
println("${LocalConstantTest.name}")//compile error
}