介绍: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实现

 

 

理解Android的手势识别的更多相关文章

  1. 深入理解 Android 之 View 的绘制流程

    概述 本篇文章会从源码(基于Android 6.0)角度分析Android中View的绘制流程,侧重于对整体流程的分析,对一些难以理解的点加以重点阐述,目的是把View绘制的整个流程把握好,而对于特定 ...

  2. 通俗理解Android事件分发与消费机制

    深入:Android Touch事件传递机制全面解析(从WMS到View树) 通俗理解Android事件分发与消费机制 说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与Li ...

  3. [转载] 深入理解Android之Java虚拟机Dalvik

    本文转载自: http://blog.csdn.net/innost/article/details/50377905 一.背景 这个选题很大,但并不是一开始就有这么高大上的追求.最初之时,只是源于对 ...

  4. 理解Android虚拟机体系结构

    1 什么是Dalvik虚拟机 Dalvik是Google公司自己设计用于Android平台的Java虚拟机,它是Android平台的重要组成部分,支持dex格式(Dalvik Executable)的 ...

  5. 深入理解Android之Gradle

    深入理解Android之Gradle 格式更加精美的PDF版请到:http://vdisk.weibo.com/s/z68f8l0xTYrZt 下载 Gradle是当前非常"劲爆" ...

  6. ZT 理解 Android 上的安全性

    理解 Android 上的安全性 http://www.ibm.com/developerworks/cn/xml/x-androidsecurity/ 利用沙箱.应用程序签名和权限增强应用程序安全性 ...

  7. Android-深入理解android自定义属性(AttributeSet,TypedArray)

    属性 自定义属性,首先要定义出来属性,我们新建一个attrs.xml: <?xml version="1.0" encoding="utf-8"?> ...

  8. 理解Android系统的进程间通信原理(二)----RPC机制

    理解Android系统中的轻量级解决方案RPC的原理,需要先回顾一下JAVA中的RMI(Remote Method Invocation)这个易于使用的纯JAVA方案(用来实现分布式应用).有关RMI ...

  9. 深入理解Android 自定义attr Style styleable以及其应用

    相信每一位从事Android开发的猿都遇到过需要自己去自定义View的需求,如果想通过xml指定一些我们自己需要的参数,就需要自己声明一个styleable,并在里面自己定义一些attr属性,这个过程 ...

随机推荐

  1. 【学习总结】 init & initWithFrame & initWithCoder

    //当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化 - (id)initWithFrame:(CGRect)frame { if (se ...

  2. 关于mapreduce过程中出现的错误:Too many fetch-failures

    Reduce task启动后第一个阶段是shuffle,即向map端fetch数据.每次fetch都可能因为connect超时,read超时,checksum错误等原因而失败.Reduce task为 ...

  3. Windows 7下载

    原版的ISO:windows 7 旗舰版:32位: ed2k://|file|cn_windows_7_ultimate_x86_dvd_x15-65907.iso|2604238848|D6F139 ...

  4. 你不需要jQuery(三):新AJAX方法fetch()

    XMLHttpRequest来完成ajax有些老而过时了. fetch()能让我们完成类似 XMLHttpRequest (XHR) 提供的ajax功能.它们之间的主要区别是,Fetch API 使用 ...

  5. Educational Codeforces Round 5 B

    Problem B:http://codeforces.com/contest/616/problem/B B. Dinner with Emma 题意:一对夫妻要去餐厅吃晚饭,Emma 想去最豪华( ...

  6. 8 行 Node.js 代码实现代理服务器

    接触 Node.js 已有多年,一直喜欢它的单线程模型和异步IO特性,以及 JavaScript 语言本身的灵活性.同时,JavaScript 前后端通吃,在全栈开发领域具有独特的优势.今天就来看看作 ...

  7. python读写配置文件

    #coding:utf-8 import ConfigParser class Conf(): def __init__(self,name): self.name = name self.cp = ...

  8. DLL 支持MFC 没有DLLMAIN函数

    如果使用VC编写DLL时,需要MFC功能: 一般在源文件里就不能手动写DLLMAIN函数了 它给MFC集成了,\src\mfc\dllmodule.cpp打开它,里面有有一个DLLMAIN函数,根据源 ...

  9. 将ANGULAR与后端请求结合

    简单的结合,却是很多应用的基础.RESTFUL就此而生.瘦服务,富客户. <!DOCTYPE html> <html lang="en" ng-app=" ...

  10. codeforces #309 div1 A

    先说我的解法吧 首先设f(i,j)表示选了前i个球且j种颜色都已经选完了的方案数 这显然是可以随便转移的 #include<cstdio> #include<cstring> ...