Javaからscalaに書き換える、超簡単な方法

またまたIntelliJ IDEAたん( ´∀`)

こないだこんなの紹介したけど、実は他にもあるんだお(`・ω・´)


とりあえずこんなサンプルコードを元にお話をすすめます

まずJavaのファイルつくって



上のコードはもちろんコンパイル通りますね

そして・・・・実は、こんなメニューもあるんだぜ(`・ω・´)




Convert Java File To Scala !

するとこうなります↓

で、このscalaのコードはそのままでコンパイル通ります\(^o^)/

・・・(´・ω・`)おわり?

ちょっとあっけないので、まぁ

  • 変数の型省略
  • System.out とか省略
  • import まとめる

なんかをするとこんな感じ ↓ ですかね

import java.io.{BufferedOutputStream ,File , FileOutputStream ,IOException }
import java.util.zip.GZIPOutputStream

/**gzipファイルを作成するサンプル */
object CreateGzipSample {
  def main(args: Array[String]): Unit = {
    try {
      val file = new File("gzipsample.gz")
      println("gzipファイル作成: 開始: " + file.getAbsolutePath)
      new CreateGzipSample().process(file)
      println("gzipファイル作成: 終了")
    }
    catch {
      case e: IOException => 
        println("gzipファイル作成中に" + "例外が発生しました。処理中断します:" + e )
    }
  }
}

class CreateGzipSample {
  /**
   * gzipファイルを作成します
   *
   * @param file 出力するgzipファイル
   * @throws IOException 入出力例外が発生した場合
   */
  def process(file: File): Unit = {
    val gzipOutStream = new GZIPOutputStream(new BufferedOutputStream(new FileOutputStream(file)))
    try {
      gzipOutStream.write(new String("あいうえお。かきくけこ。").getBytes)
      gzipOutStream.finish
    }
    finally {
      gzipOutStream.close
    }
  }
}

あとは、なんか元のコードが微妙なんですが*1、まぁそこを突っ込んでもしょうがないので、こんな感じでいいですかねぇ・・・もっと短くしようと思えばできますが(´・ω・`)

*1: おそらく超初心者向けの説明だから?