介紹:scala 是簡化的java,運行於jvm的腳步語言。Java和scala通過各自編譯器編譯過都是jvm能解析class文件。本文介紹java和scala如何互調
scala的源代碼文件是以.scala為后綴的,編譯后的文件class文件。
1.scala使用JDK的java類
用法:import 要使用java類,在scala代碼內Java類
import java.lang.reflect._
import java.util.
Date//導入java類
println("Today is " + new
Date())
val methods =
getClass.getMethods()//使用java類
methods.foreach {
methods: Method => println(methods.getName)
}
2.scala使用java類
用法:跟scala使用JDK的java類方法一樣,但是java類編譯后的類文件,存放在scala文件所在的包目錄下,才能通過編譯和使用
object UseInvestment {
def main(args: Array[String]) {
val investment = new Investment("xyz Corporation", InvestmentType.STOCK) //java類
println(investment.getClass())
val theYield = investment.
`yield` // yield是scala關鍵字,所以要`括起來`
println("theYield is " + theYield);
}
}
Investment和InvestmentType分別是Java類
public
class Investment {
private String investmentName;
private InvestmentType investmentType;
public Investment(String name, InvestmentType type) {
investmentName = name;
investmentType = type;
}
public int yield() {
return 0;
}
}
public
enum InvestmentType {
SHORT_TERM,
BOND,
STOCK
}
3. java使用scala
用法:Car的class類要在classPath內
,import 要使用scala類。
在Java代碼內按java語法來是使用scala類
//--------------scala類--------------------------
class Car(val year: Int) {
private[this] var miles: Int = 0
def drive(distance: Int) {
miles += distance
}
override def toString(): String = "year:" + year + " miles:" + miles
}
//-----------java類-------------------------
public class UseCar {
public static void main(String[] args) {
Car car = new Car(2009);
System.out.println(car);
car.drive(10);
System.out.println(car);
}
}
note:
Car的class類要在classPath內,UseCar 才能通過編譯
4.java使用伴生對象
------------伴生對象----------------
class
Buddy {
def greet() {
println("Hello from Buddy class")
}
}
object
Buddy {
def greet() {
println("Hello from Buddy object")
}
}
---------------java類------------------------
public class BuddyUser {
public static void main(String[] args) {
new
Buddy().greet();//使用伴生類
Buddy$.MODULE$.greet();//使用伴生對象
}
}
note:
java使用伴生對象:
伴生對象名
$.MODULE$.
方法名
();//
5.java使用trait
//--------------------trait----------------
trait
Writable {
def write(message: String): Unit
}
//--------java---------------------------------
public class AWritable implements
Writable {
public void write(String message) {
System.out.println(message);
}
public static void main(String[] args) {
Writable writable = new AWritable();
writable.write("依晨");
}
}
note:
java使用trait,通過implements 實現trait,當接口使用
必須按接口標准。trait方法有自己實現,Java類使用trait不會使用trait實現