⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inner.scala

📁 JAVA 语言的函数式编程扩展
💻 SCALA
字号:
//############################################################################// Test Java interaction with scala inner classes//############################################################################// $Id: inner.scala 13455 2007-12-05 12:19:00Z michelou $import java.io.{BufferedReader, File, FileWriter, InputStreamReader}class A {  val abc = "A.abc"  protected class B(x: Int, y: String) {    println(abc); println(x)    println(y)  }  trait Itf {    def method1(x: Int): Int        trait Itf2 extends Itf {      def method2: Unit    }  }  trait PlainTrait {    def method1(x: Int): Int  }  class Impl(a: Int) extends Itf {    def method1(x: Int) = {      println(x)      println(a)      x + a    }  }  class Impl2 extends Impl(1) with Itf#Itf2 {    def method2 = {      println(abc)    }  }  def newImpl: Itf = new Impl(1)  def newImpl2: Itf#Itf2 = new Impl2  class Outer1(arg1: Int) {    class Outer2(arg2: Int) {      class Outer3(arg3: Int) {        println("Outer3: " + arg1 + " " + arg2 + " " + arg3);      }    }  }}object Scalatest {  private val outputdir = System.getProperty("scalatest.output", "inner-jvm.obj")  private val scalalib  = System.getProperty("scalatest.lib", "")  private val classpath = outputdir + File.pathSeparator + scalalib  private val javacmd   = System.getProperty("javacmd", "java")  private val javac     = javacmd + "c"  def javac(src: String, fname: String) {    val tmpfilename = outputdir + File.separator + fname    val tmpfile = new FileWriter(tmpfilename)    tmpfile.write(src)    tmpfile.close    exec(javac + " -d " + outputdir + " -classpath " + classpath + " " + tmpfilename)  }  def java(cname: String) =    exec(javacmd + " -cp " + classpath + " " + cname)  /** Execute cmd, wait for the process to end and pipe it's output to stdout */  private def exec(cmd: String) {    val proc = Runtime.getRuntime().exec(cmd)    val inp = new BufferedReader(new InputStreamReader(proc.getInputStream))    val errp = new BufferedReader(new InputStreamReader(proc.getErrorStream))    proc.waitFor()    while (inp.ready) println(inp.readLine())    while (errp.ready) println(errp.readLine())  }}object Test {  def main(args: Array[String]) {    val javaInteraction = """public class JavaInteraction {    public static void main(String[] args) {        A a = new A();        A.B b = a.new B(1, "Hello");        A.Itf itf = a.newImpl();        itf.method1(1);        A.Itf.Itf2 itf2 = a.newImpl2();        itf2.method2();        A.Outer1 o1 = a.new Outer1(1);        A.Outer1.Outer2 o2 = o1.new Outer2(2);        A.Outer1.Outer2.Outer3 or = o2.new Outer3(3);    }}"""    Scalatest.javac(javaInteraction, "JavaInteraction.java")    Scalatest.java("JavaInteraction")    val accessingScala = """public class AccessingScala {    public static void main(String[] args) {        A a = new A();        System.out.println(a.abc());    }}"""    Scalatest.javac(accessingScala, "AccessingScala.java")    Scalatest.java("AccessingScala")  }}//############################################################################

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -