【问题标题】:Passing Class<?> parameter using Rhino使用 Rhino 传递 Class<?> 参数
【发布时间】:2011-04-26 07:37:06
【问题描述】:

我正在尝试为自定义集合对象调用构造函数。这个自定义对象接受一个 Class 类型的参数。

在java中,这样做是这样的:

ICollection col = new PersistentCollection(ContentX.class);

这是我第一次深入了解 rhino,但我还没有弄清楚如何传递这个参数。我发现“class”是一个保留字,因此不可用。

我想我可以像这样从 Class.forName 获取 Class:

importPackage(Packages.something.collections);
importPackage(Packages.something.content4);
var col = new PersistentCollection(Class.forName(ContentX));

但它只是抛出 ClassNotFoundException - 使用完全限定的路径 something.content4.ContentX!所以很明显它找到了这个类,否则它就不会知道它的路径。

我做错了吗?遗憾的是,我现在无法更改 java 库,我需要在没有新部署的情况下修复数据。

在谷歌上搜索 javascript 类只会产生 DOM/CSS 问题。

【问题讨论】:

  • Javascript 是如何参与其中的?
  • QPekka 他正在使用来自 JDK 6 的 Rhino(在这里猜测)——它与发行版一起打包并且非常易于使用
  • @Jörgen 我刚刚尝试了来自“jrunscript”的var c = java.lang.Class.forName("java.util.HashMap"),它工作得很好。
  • @Pointy 那么它就可以使用了。似乎 Rhino 会使用与系统其他部分不同的类路径。
  • 我想变得有趣,但似乎没有。 :P

标签: java javascript rhino


【解决方案1】:

我认为你只需要这样做:

var col = new PersistentCollection(ContentX);

或者,如果你的类名是一个字符串:

var col = new PersistentCollection(
        java.lang.Class.forName('something.content4.ContentX'));

【讨论】:

  • 哈哈,你确实是对的: var col = new PersistentCollection(ContentX);有时我什至自己都感到惊讶.. 周末我是多么愚蠢。
猜你喜欢
  • 1970-01-01
  • 2017-01-05
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
相关资源
最近更新 更多