文章目錄
- Scala源檔案的撰寫和運行及編譯結果的反編譯深入分析
- 在桌面上創建一個HelloJava.java檔案并進行編輯
- 運行cmd
- 編譯HelloJava.java檔案
- 執行HelloJava.class檔案
- 在桌面上創建一個HelloScala.scala檔案并進行編輯
- 在cmd中編譯HelloScala.scala檔案
- 執行HelloScala.class檔案
- 那么我們嘗試一下用java 運行一下HelloScala.class檔案
- 那么我們再嘗試一下用java運行一下HelloScala$.class檔案
- 反編譯(利用反編譯工具)
- 使用java引入Scala類別庫進行編譯
Scala源檔案的撰寫和運行及編譯結果的反編譯深入分析
在桌面上創建一個HelloJava.java檔案并進行編輯
public class HelloJava{
public static void main(String[] args){
System.out.println("Hello Java");
}
}
運行cmd
打開桌面,顯示所有檔案
cd Desktop
dir
編譯HelloJava.java檔案
javac HelloJava.java
編譯成功會生成一個HelloJava.class的檔案
執行HelloJava.class檔案
java HelloJava
在桌面上創建一個HelloScala.scala檔案并進行編輯
object HelloScala{
def main(args: Array[String]) : Unit = {
println("hello scala")
}
}
在cmd中編譯HelloScala.scala檔案
scalac HelloScala.scala
編譯成功會生成一個HelloScala.class的檔案和HelloScala$.class檔案
執行HelloScala.class檔案
scala HelloScala
那么我們嘗試一下用java 運行一下HelloScala.class檔案
java HelloScala
通過結果來看這里是不行的,說明java中不包含
那么我們再嘗試一下用java運行一下HelloScala$.class檔案
java HelloScala$
通過運行結果來看,并不能被執行
反編譯(利用反編譯工具)
通過反編譯的代碼來看,這里是用到了HelloScala$.class里面的方法
我們再看HelloScala$.class
通過查看原碼發現,這里是用靜態代碼塊new一個方法,通過靜態的構造方法賦值給***$.class,所以我們直接用java去進行編譯是行不通的(構造方法私有化)
所以我們一開始Scala就被宣告成了一個靜態的物件(單例設計模式)這里使用的是object關鍵字,是HelloScala$的物件,
使用java引入Scala類別庫進行編譯
java -cp %SCALA_HOME%/lib/scala-library.jar; HelloScala
在了解了Scala的設計思想后,以便于對之后Scala的學習
到底啦!給靚仔一個關注吧!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419140.html
標籤:其他
