1

我正在尝试为这样的准引号插入类注释

q"""
    package somePackage {
        /**
         * This is a comment
         */
        public class SomeClass {
        }
    }
"""

但它抛出一个异常

Exception in thread "main" java.lang.IllegalArgumentException: not legal package stat: <type ?>
    at scala.reflect.internal.ReificationSupport$ReificationSupportImpl.mkPackageStat(ReificationSupport.scala:156)
    at scala.reflect.internal.ReificationSupport$ReificationSupportImpl.mkPackageStat(ReificationSupport.scala:11)
    at database.generate.jooq.JooqGenerate.generateDaos(JooqGenerate.scala:65)
    at database.generate.GenerateDao$.apply(GenerateDao.scala:25)
    at Test$.main(Test.scala:7)
    at Test.main(Test.scala)
4

1 回答 1

1

这对我有用:

scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._

scala> q"""
     | package somePackage {
     | /**
     | * This is a comment
     | */
     | class SomeClass()
     | }
     | """
res0: reflect.runtime.universe.PackageDef =
package somePackage {
  class SomeClass extends scala.AnyRef {
    def <init>() = {
      super.<init>();
      ()
    }
  }
}

scala>

scala>

是不是您在引号中使用了 java 类,这导致了问题?

还要检查您使用的是哪个 Scala 版本

scala> util.Properties.versionString
res2: String = version 2.11.7

和这里的教程:http: //docs.scala-lang.org/overviews/quasiquotes/intro.html

于 2015-09-02T09:59:07.060 回答