我正在寻找的问题是: 从它的string名称实例化一个类,它描述了如何实例化一个类时,它的名字。 有没有办法在Java中做到这一点? 我将有包名和类名,我需要能够创build具有该特定名称的对象。
我的同事一直在用“f”的小写“new function()”来定义JavaScript中的新对象。 它似乎在所有主stream浏览器中都能正常工作,并且在隐藏私有variables方面似乎也相当有效。 这是一个例子: var someObj = new function () { var inner = 'some value'; this.foo = 'blah'; this.get_inner = function () { return inner; }; this.set_inner = function (s) { inner = s; }; }; 只要“this”被使用,它就成为someObj的公共财产。 所以someObj.foo,someObj.get_inner()和someObj.set_inner()都是公开的。 另外,set_inner()和get_inner()是特权方法,所以它们可以通过闭包访问“内部”。 但是,我还没有看到任何地方提及这种技术。 就连道格拉斯·克罗克福德的JSLint也抱怨道: 奇怪的build筑。 删除“新” 我们在生产中使用这种技术,似乎运行良好,但我有点担心,因为它没有logging在任何地方。 有谁知道这是否是一种有效的技术?
因此,我一直听到MSVC没有正确实现两阶段模板查找/实例的问题。 从我目前了解的情况来看,MSVC ++只是对模板类和函数进行基本的语法检查,并不检查模板中使用的名称是否至less已被声明或沿着这些行进行了检查。 它是否正确? 我错过了什么?
由于Javagenerics的实现,你不能有这样的代码: public class GenSet<E> { private E a[]; public GenSet() { a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation } } 我怎样才能实现这一点,同时保持types安全? 我在Java论坛上看到了这样一个解决scheme: import java.lang.reflect.Array; class Stack<T> { public Stack(Class<T> clazz, int capacity) { array = (T[])Array.newInstance(clazz, capacity); } private final T[] array; } 但我真的不知道发生了什么事。
有没有办法创建一个特定类的实例给定的类名(动态),并传递给它的构造函数的参数。 就像是: Object object = createInstance("mypackage.MyClass","MyAttributeValue"); 其中"MyAttributeValue"是MyClass的构造函数的参数。