scalaのannotationって・・・使えないの?

Posted by Ken on 29th, 2008

scalaだとなぜかannotationが使えない。
scalacでclassファイルにしてもだめ。

Antでコンパイルしたbuild.xmlをメモ。

<?xml version=”1.0″?>
<project name=”sdb” default=”test.UnitTest”>
<property file=”build.properties” />

<property name=”sources.dir” value=”${base.dir}/src” />
<property name=”build.dir” value=”${base.dir}/build” />

<target name=”init”>
<property name=”scala-library.jar” value=”${scala.home}/lib/scala-library.jar” />
<path id=”build.classpath”>
<pathelement location=”${scala-library.jar}”/>
<fileset dir=”${base.dir}/lib”>
<include name=”*.jar”/>
</fileset>
<!–<pathelement location=”${path.to.jar}”/>–>
<pathelement location=”${build.dir}”/>
</path>
<taskdef resource=”scala/tools/ant/antlib.xml”>
<classpath>
<pathelement location=”${scala.home}/lib/scala-compiler.jar”/>
<pathelement location=”${scala-library.jar}”/>
</classpath>
</taskdef>
</target>

<target name=”build” depends=”init”>
<mkdir dir=”${build.dir}”/>
<scalac srcdir=”${sources.dir}” destdir=”${build.dir}” classpathref=”build.classpath” force=”changed”>
<include name=”**/*.scala”/>
</scalac>
</target>

<target name=”accountTest” depends=”build”>
<java classpathref=”build.classpath” classname=”test.UnitTest”/>
</target>
</project>

build.xmlが参照してるbuild.propertiesはこれ。

scala.home = c:/scala
base.dir = d:/workspace/scalatest

5 Responses to “scalaのannotationって・・・使えないの?”

  1. みずしま

    こんにちは。
    Javaのソースファイルで定義したAnnotationをScalaのクラスに付加することはできます。しかし、Javaにおける@Retention(RetentionPolicy.RUNTIME)に相当するアノテーションは、現状ではScalaでは定義できないので、そのようなアノテーションはJavaのソースファイルで定義して、それをScala側のクラスに付加するという形で使うことになると思います。


  2. Ken

    みずしまさん、コメントありがとうございます。
    やはりそうでしたか・・・。
    どのサイトを見てもJavaのAnnotationを使っているのは見かけるのに、Scalaで定義する方法が載っていなかったので試してみようかと思っていたところです。
    今は忙しくて試せてないのですが、ただの推測ではなくなって助かりました。
    どこかでScalaのAnnotationはJavaとの互換を保つように用意したようなことを見かけたような気がします。
    Scalaはスクリプトということなので、インスタンス変数の取得が簡単に出来るとか、その辺を強化していただきたいですね。


  3. keisuken

    Javaのアノテーションは記述できるみたいです。
    日記に書きました。
    http://cappuccino.jp/keisuken/logbook/20080919.html#p05


  4. keisuken

    ああちょっと言ってる事が違うようですね(Scala側でJavaのアノテーションを定義)。
    やはりJavaで記述してもらうしかないでしょうね。
    ただ2.7.2 RC1からJavaのソースと混在して開発できるようになったようですので、Java側でアノテーションを定義したとしても、そう面倒くさいことにはならないはずです。


  5. Ken

    keisukenさん、コメントありがとうございます。
    Javaでフレームワーク的なものを用意し、scalaでササッと記述。
    ってことをやりたかったのです。
    Javaでアノテーションを定義し、scalaでも利用・・・ということを考えていました。
    Javaのソースと混在の件ですが、混在させたくないです。
    理由は”Javaの知識が必要”ということでスキルが上がってしまうためです。

    以前からブログを拝見させていただき、有益な情報としてありがたく活用させていただいてます m(_ _)m
    scalaで閉じてしまえば、アノテーションも使えそうですね。


Leave a Reply



Search


SUBSCRIBE

  • 最近のコメント

  • カテゴリー

  • タグ

    Amazon Android au BeagleBoard blog CMS Compiz Fusion Django DVD Google HT-03A iPhone ISMS Linux LUMIX LUMIX G1 MacBook MySQL Workbench OpenX Poken Python server Software Design SOY CMS TinyMCE Ubuntu Ubuntu 9.04 Vim VirtualBox WordPress wwwsqldesigner XenServer XMind しろいくも オトノハコ ハルフウェイ マンガ 岩岡 ヒサエ 帰省 広告 望遠鏡 桜井亜美 花粉症