scalaのannotationって・・・使えないの?
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
こんにちは。
Javaのソースファイルで定義したAnnotationをScalaのクラスに付加することはできます。しかし、Javaにおける@Retention(RetentionPolicy.RUNTIME)に相当するアノテーションは、現状ではScalaでは定義できないので、そのようなアノテーションはJavaのソースファイルで定義して、それをScala側のクラスに付加するという形で使うことになると思います。
6月 5th, 2008 at 10:39
みずしまさん、コメントありがとうございます。
やはりそうでしたか・・・。
どのサイトを見てもJavaのAnnotationを使っているのは見かけるのに、Scalaで定義する方法が載っていなかったので試してみようかと思っていたところです。
今は忙しくて試せてないのですが、ただの推測ではなくなって助かりました。
どこかでScalaのAnnotationはJavaとの互換を保つように用意したようなことを見かけたような気がします。
Scalaはスクリプトということなので、インスタンス変数の取得が簡単に出来るとか、その辺を強化していただきたいですね。
6月 5th, 2008 at 23:57
Javaのアノテーションは記述できるみたいです。
日記に書きました。
http://cappuccino.jp/keisuken/logbook/20080919.html#p05
9月 19th, 2008 at 11:34
ああちょっと言ってる事が違うようですね(Scala側でJavaのアノテーションを定義)。
やはりJavaで記述してもらうしかないでしょうね。
ただ2.7.2 RC1からJavaのソースと混在して開発できるようになったようですので、Java側でアノテーションを定義したとしても、そう面倒くさいことにはならないはずです。
9月 19th, 2008 at 11:41
keisukenさん、コメントありがとうございます。
Javaでフレームワーク的なものを用意し、scalaでササッと記述。
ってことをやりたかったのです。
Javaでアノテーションを定義し、scalaでも利用・・・ということを考えていました。
Javaのソースと混在の件ですが、混在させたくないです。
理由は”Javaの知識が必要”ということでスキルが上がってしまうためです。
以前からブログを拝見させていただき、有益な情報としてありがたく活用させていただいてます m(_ _)m
scalaで閉じてしまえば、アノテーションも使えそうですね。
9月 19th, 2008 at 11:50