我有一些用Java编写的代码。对于新课程,我计划在Scala中编写。我在访问基类的受保护静态成员时遇到问题。这是示例代码:
Java代码:
class Base{
protected static int count = 20;
}
标量代码:
class Derived extends Base{
println(count);
}
有什么建议吗?我如何在不修改现有基类的情况下解决这个问题
这在Scala中是不可能的。由于Scala没有记号,static
您不能访问protected static
父类的成员。这是一个已知的限制。
解决方法是执行以下操作:
// Java
public class BaseStatic extends Base {
protected int getCount() { return Base.count; }
protected void setCount(int c) { Base.count = c; }
}
现在,您可以改为从这个新类继承,并通过getter / setter方法访问静态成员:
// Scala
class Derived extends BaseStatic {
println(getCount());
}
这很丑陋-但是,如果您真的想使用protected static
成员,那就必须这样做。
在Java和Android中,我们可以这样做: 这样,在其他地方,我们就可以做到这一点: //编辑也许我应该说得更清楚些。我的意思是我们如何才能用Kotlin写上面的内容,用Kotlin。
我正在装一个应用程序,它工作得很好。但当我使用 在OuterClass中,并通过
问题内容: 在Scala中使用Java进行模拟的模拟方式是什么: 我特别希望我的内部类 不必 具有完全限定的名称-即,我不需要。因此,在Scala中,我想到的可能是这样的: 但这似乎不起作用:我的scala 似乎在课堂外都看不到。一种解决方案当然是: 这是确定-但因为我的课的名字,真是的“类型” 和实际上有一个很长的名字。所以: 这是冗长而可怕的。我可以替换为just,但是与它所关联的类之间没有明
问题内容: 通常,在面向对象的范例中,静态方法只能访问静态变量和静态方法。如果是这样,那么就会出现一个明显的问题,即Java中的main()方法如何才能访问非静态成员(变量或方法),即使它特别是公共静态void … !!! 问题答案: main方法也无权访问非静态成员。
我有以下设计,我想在Kotlin中实现: null 有没有更好的,更Kotlin的方法?