可以用反射根据给定的类名来动态生成实例
比如你定义了一个类
package sample/**
* Created by pseudo on 15-9-16.
*/
public class TestClass {
private String name
public TestClass(String name) {
this.name = name
}
@Override
public String toString() {
return "TestClass{" +
"name='" + name + '\'' +
'}'
}
}
然后使用如下代码创建这个类的一个实例
public static void main(String[] args) throws Exception{//加载要反射的类
Class clz = Class.forName("sample.TestClass")
//找到类的构造方法
Constructor constructor = clz.getDeclaredConstructor(String.class)
//使用找到的构造方法创建实例
Object instance = constructor.newInstance("Lilei")
System.out.println(instance)
}
这个instance就是需要的结果
1、定义一个类public class MyClass{
}
2、类中定义一个方法,创建该类实例
public class MyClass{
public MyClass getMC(){//该方法返回类实例
return new MyClass()//返回类实例
}
}
你是不是写错了?是不是Iterator iterator=c1.iterator()Iterator用来遍历Collection中的元素,这句的意思是“获取遍历Collection集合[中元素]的指针”。
查阅一下API文档,ArrayList是Collection的子类。
java在编译时c1的类型是Collection,运行时c1的类型是ArrayList,这就是多态[即编译时与运行时引用变量的类型发生了变化]。