2015-11-18 30 views
0

我使用TreeHugger在运行时生成代码。我找不到许多与之相关的文件。我的问题是,如果我使用treehugger生成类,我将来能够访问这些类吗?使用TreeHugger scala生成代码

准确地说:我想读取来自CSV等文件的数据并在运行时创建类。我可以在将来使用这个类,比如在运行时生成的下一个类中。

我对scala非常陌生,请原谅,如果我不清楚解释。

非常感谢!

回答

1

我已经做了类似的事情,所以我会分享我所了解到:

Treehugger最终产生在运行时代码(串)在随后的单独运行使用(或我假设是在运行时评估,但我从来没有得到这个工作)。

所以行动的过程取决于你所说的“运行”是什么:

  1. 是您的.csv文件在运行时可用?如果你可以在编译时访问这些文件(通常是这样),那么你的两个选项就是例子:实验性的(scala macros)或传统的(sbt plugin) - 两种方法都很相似,但有着微妙的优点和缺点。

  2. 如果您只能在运行时访问文件,但仍然需要生成并“键入”这些类并使编译器期望它们,那么在我看来,有人犯了一个糟糕的设计错误!但是如果你发现自己陷入这种情况,那么可以在运行时使用字节码工程库和一些类型检查器黑魔法(runtime type provider)来定义和加载类。

+0

谢谢@Julian Peeters,你的第二个选择是我所需要的!它帮助我排除了使用TreeHugger实现我想要的功能的可能性。我将尝试在运行时定义和加载类。 – ssri