是否有一种方法可以在给定类名(动态)的情况下创建特定类的实例,并将参数传递给它的构造函数。
喜欢的东西:
Object object = createInstance("mypackage.MyClass","MyAttributeValue");
其中“MyAttributeValue”是MyClass构造函数的参数。
是否有一种方法可以在给定类名(动态)的情况下创建特定类的实例,并将参数传递给它的构造函数。
喜欢的东西:
Object object = createInstance("mypackage.MyClass","MyAttributeValue");
其中“MyAttributeValue”是MyClass构造函数的参数。
我最近比较了[]和list()的处理速度,惊讶地发现[]比list()快三倍多。我用{}和dict()进行了相同的测试,结果几乎相同:[]和{}都花了大约0.128秒/百万次循环,而list()和dict()分别花了大约0.428秒/百万次循环。
为什么会这样?[]和{}(和probably()和",太)立即传递回一些空股票文字的副本,而他们的显式命名对应(list(), dict(), tuple(), str())完全创建一个对象,无论他们是否实际上有元素?
我不知道这两种方法有什么不同,但我很想知道。 我在文档或SO上找不到答案,而且搜索空括号的问题比我想象的要多。
我通过调用timeit.timeit("[]")和timeit.timeit("list()"),以及timeit.timeit("{}")和timeit.timeit("dict()")来获得计时结果,分别比较列表和字典。我运行的是Python 2.7.9。
我最近发现了“为什么if True比if 1慢?”,它比较了if True和if 1的性能,似乎涉及到类似的字面与全局场景;也许这也值得考虑。
由于Java泛型的实现,你不能有这样的代码:
public class GenSet<E> {
private E a[];
public GenSet() {
a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation
}
}
如何在保持类型安全的同时实现这一点?
我在Java论坛上看到一个解决方案是这样的:
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;
}
但我真的不明白这是怎么回事。