声明一个常量类
class Constant {
companion object {
const val BASE_URL = "http://www.baidu.com" //正式环境根URL
const val BASE_TEST_URL = "http://www.baidu.test.com" //测试环境根URL
private const val LOGIN_URL = "login"
var DEBUG = false
@JvmField
var APP_KEY = "11111111111111111111111"
/**
* 获取登录url
*/
fun getLoginUrl(): String = if (DEBUG) {
BASE_TEST_URL + "/" + LOGIN_URL
} else {
BASE_URL + "/" + LOGIN_URL
}
}
}
在kotlin中调用常量和静态方法
fun main() {
println(Constant.BASE_URL)
println(Constant.BASE_TEST_URL)
println(Constant.DEBUG)
println(Constant.getLoginUrl())
Constant.DEBUG = true
println(Constant.getLoginUrl())
println(Constant.APP_KEY)
}
在java中调用常量和静态方法
class TestInJava {
public static void main(String[] args) {
println(Constant.BASE_URL);
println(Constant.BASE_TEST_URL);
println(Constant.Companion.getDEBUG());
println(Constant.Companion.getLoginUrl());
//由于DEBUG属性未用const val修饰,且使用@JvmField注解,因此需要通过内部类的set方法来赋值
Constant.Companion.setDEBUG(true);
println(Constant.Companion.getLoginUrl());
println(Constant.APP_KEY);//由于APP_KEY属性被@JvmField注解,因此可直接引用
}
private static void println(Object object) {
System.out.println(object);
}
}
打印输出(kotin与java输出一致)
http://www.baidu.com
http://www.baidu.test.com
false
http://www.baidu.com/login
http://www.baidu.test.com/login
11111111111111111111111