介绍: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. poj City Horizon (线段树+二分离散)

    http://poj.org/problem?id=3277 City Horizon Time Limit: 2000MS   Memory Limit: 65536K Total Submissi ...

  2. JAVA-前台编码,后台解码

    前台 var objValue =window.encodeURI(window.encodeURI(queryObj)); alert(objValue); 后台 String descStr = ...

  3. [转载]Unity3D 游戏引擎之使用C#语言建立本地数据库(SQLITE)

    以前在开发中一直使用IOS源生的数据库,通过传递消息的形式在与Unity3D中进行交互.本文我在详细说说如何使用C#语言来在MAC 操作系统下创建Unity本地数据库,我是C#控哇咔咔--- 首先你需 ...

  4. win8 优化笔记

    win8可以关掉的服务: 以下是小编搜集的可以安全更改为手动启动的服务(按名称排序): Application Experience(启动时为程序处理应用程序兼容性缓存请求) ·Computer Br ...

  5. 【win8技巧】去掉Win8导航菜单下面的这台电脑其他的文件夹

    win8 删除 上传 下载 这台电脑 左侧导航 另存为中的 视频.图片.文档.下载的方法!落雨 win8 Windows 8.1  默认将视频.图片.文档.下载.音乐.桌面等常用文件夹也显示在其中了, ...

  6. PHP set_exception_handler 设置异常处理函数

    If you're handling sensitive data and you don't want exceptions logging details such as variable con ...

  7. snoopy(强大的PHP采集类) 详细介绍

    Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单,可以用来开发一些采集程序和小偷程序,本文章详细介绍snoopy的使用教程. Snoopy的一些特点: 抓取网页的内容 fe ...

  8. POJ3697+BFS+hash存边

    /* 疾速优化+hash存边 题意:给定一个包含N(1 ≤ N ≤ 10,000)个顶点的无向完全图,图中的顶点从1到N依次标号.从这个图中去掉M(0 ≤ M ≤ 1,000,000)条边,求最后与顶 ...

  9. AppStore 沙箱环境的测试流程

    1:请确保你打得版本是 沙箱环境的版本 2:请确保的手机序列号已经加入沙箱环境3:请确保你的手机Apple ID 账户已经退出 ------ 如果这些都准备好了,再进行测试吧,不然一堆的未知问题等着你 ...

  10. 落叶枫桥LOGO

    LOGO