常量
Java代码:
class StaticDemoActivity {
public static final String LOAN_TYPE = "loanType";
public static final String LOAN_TITLE = "loanTitle";
}
Kotlin中:
class StaticDemoActivity {
companion object {
val LOAN_TYPE = "loanType"
val LOAN_TITLE = "loanTitle"
}
}
或者
class StaticDemoActivity {
companion object StaticParams{
val LOAN_TYPE = "loanType"
val LOAN_TITLE = "loanTitle"
}
}
注:
companion object的名字可以省略,可以使用Companion来指代
引用常量(这里的引用只针对于java引用kotlin代码)
TestEntity类引用StaticDemoActivity中的常量
class TestEntity {
public TestEntity () {
String title = StaticDemoActivity.Companion.getLOAN_TITLE();
}
}
或者
class TestEntity {
public TestEntity () {
String title = StaticDemoActivity.StaticParams.getLOAN_TITLE();
}
}
静态方法
Java代码:
class StaticDemoActivity {
public static void test(){
、、、
}
}
Kotlin中:
class StaticDemoActivity {
companion object {
fun test(){
、、、
}
}
}
或者
class StaticDemoActivity {
companion object StaticParams{
fun test() {
、、、
}
}
}
引用静态方法(这里的引用只针对于java引用kotlin代码)
TestEntity类引用StaticDemoActivity中的静态方法
class TestEntity {
public TestEntity () {
StaticDemoActivity.Companion.test();
}
}
或者
class TestEntity {
public TestEntity () {
StaticDemoActivity.StaticParams.test();
}
}
网友评论
companion object {
private val mList = ArrayList<Fragment>()
private val mAdapter = FragmentViewPagerAdapter(fragmentManager)
}
这边我有一个解决方案是这样的:
1、创建一个object关键字的静态类,这个类里面都是静态的:
object DemoActivity{
var mActivity :MyActivity= MyActivity()
}
2、如果在companion object中调用的话:
companion object {
var mAdapter= MyAdapter(DemoActivity.mActivity.supportFragmentManager)
}
这样的话就可以调用到了。
还有一点就是不建议您将创建FragmentViewPagerAdapter放在companion object 中,因为创建成功会就是静态的成员变量,是随着类的加载而加载的,一般情况下,能少用静态变量就少用。
当然也只是我的建议。
companion object {
private val mAdapter = FragmentViewPagerAdapter(fragmentManager)
}
我需要这个fragmentManager因为我要在下面的静态方法里使用,但是这个fragmentManager只能从activity里获取,我想RepairReportViewModel constructor(activity: AppCompatActivity)传过来,但情况是,我怎么也获取不到activity,这个该怎么办呢?