早上好,我有一个名为 Application 的类,它有一个不能更改的 def 并返回一个 int,在它内部我定义了一个局部变量的路径,从另一个名为 App 的类扩展到 Application 类,我怎样才能得到那个变量是局部的吗?我尝试在块外分配一个变量,但它的值为空。非常感谢你对我的帮助。
...
class App extends Application {
println("Inside of APP")
println(mypath)
}
class Application {
var mypath: String = _
def functionname() : Int = {
var exitCode = 0
val localPath: String = "C:/path"
mypath = localPath
println(localPath)
exitCode
}
println(mypath)
}
object HelloWorld {
def main(args: Array[String]): Unit = {
val origin = new Application()
println(origin.functionname)
}
}
输出是:
null --> //This is value of myPath outside block (KO)
C:/path -> //This is value of Local Variable (OK)
0 --> is OK
the println of the App class is not show (KO)
我编辑了代码以更好地解释它,你只能制作 val origin = new Application() 的实例,因为程序允许你做一个,现在我不知道该怎么做是 App 类可以获取类 Application 的本地值,但我没有获取值并且它不显示 println("Inside of APP")
class App extends Application {
println("Inside of APP")
val app = new App()
app.functionname()
println(app.mypath)
}
class Application {
var mypath: String = _
def functionname(): Int = {
val exitCode = 0
val localPath: String = "C:/path"
mypath = localPath
println(mypath)
exitCode
}
println(mypath)
}
object HelloWorld {
def main(args: Array[String]): Unit = {
val origin = new Application()
println(origin.functionname())
println("===========")
println(origin.mypath)
}
}
...
您确实重新分配了var mypath
,但你可能错过了这一点,因为println
里面的声明Application
当您实例化类时,在初始化时调用的类Application
with new
。你的第一条输出线是null
因为这是未初始化的默认值String
.
类定义中编写的任何不是字段或方法的语句(例如您的println
语句)将被移动到该类的主构造函数内。因此,您的println
在调用方法之前调用语句functionname
, 因此mypath
is null
在那时候。
您看不到任何输出class App
因为你从来没有在代码中实例化它。你当然可以这样做,但既然App
你会实例化一个不同的实例mypath
比 中的那个Application
您之前实例化的类,mypath
仍将是null
在班上Application
。
您需要的是一种计算值的方法var maypath
of App
,您只需致电即可做到这一点functioname
on the App
您刚刚实例化的对象,因为App
也继承了它。
这是更新后的示例:
class App extends Application {
println("Inside of APP")
println(mypath)
}
class Application {
var mypath: String = _
def functionname(): Int = {
val exitCode = 0
val localPath: String = "C:/path"
mypath = localPath
println(localPath)
exitCode
}
println(mypath)
}
object HelloWorld {
def main(args: Array[String]): Unit = {
val origin = new Application()
println(origin.functionname())
println("===========")
println(origin.mypath)
val app = new App()
app.functionname()
println(app.mypath)
}
}
Outputs:
null
C:/path
0
===========
C:/path
null
Inside of APP
null
C:/path
C:/path
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)