我有一个类,有多种方法和成员。当我创建此类的实例时,我会在第一个类中创建另一个类的实例。第二类中的一些方法需要知道第一个类的哪个实例正在运行。目前,我正在尝试将“this”传递到接受类型firstClass的参数中。我究竟做错了什么?同样,我只是想让第二个类实例知道它属于哪个第一个类实例,以便它可以从中调用公共方法和成员。
编辑:代码示例:
def main(args:Array[String]) : Unit = {
val objectOne = new classOne
}
class classOne {
val mutableBuffer = mutable.Buffer[String]
val objectTwo = new classTwo
objectTwo.doThis(this)
}
class classTwo {
def doThis (exA:classOne) = {
exA.mutableBuffer += "Adding text to a Buffer in object One"
}
}
Run Code Online (Sandbox Code Playgroud)
自打字通常是最干净的解决方案
class Bippy {
outer =>
...
class Bop {
def demoMethod() = println(outer)
}
...
}
Run Code Online (Sandbox Code Playgroud)
更新
示例代码改变了一切,这显然与内部类无关。我相信你的问题出在这一行:
val mutableBuffer = mutable.Buffer[String]
Run Code Online (Sandbox Code Playgroud)
它没有做你认为它正在做的事情,mutableBuffer现在指向mutable.Buffer单例,它实际上不是一个实例Buffer
相反,尝试以下两种之一:
val mutableBuffer = mutable.Buffer[String]()
//or
val mutableBuffer = mutable.Buffer.empty[String]
Run Code Online (Sandbox Code Playgroud)
您还应该坚持以大写字母开头的类/单例/类型名称的约定,将示例代码转换为:
import collection.mutable.Buffer
def main(args:Array[String]) : Unit = {
val one = new ClassOne()
}
class ClassOne {
val mutableBuffer = Buffer.empty[String]
val two = new ClassTwo()
two.doThis(this)
}
class ClassTwo {
def doThis(one: ClassOne) = {
one.mutableBuffer += "Adding text to a Buffer in object One"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2295 次 |
| 最近记录: |