泛型:主要是为了找到失去的类型
泛型适用于类级别,会有很多类型。根据泛型的别名变化而变化。
泛型类的变化会影响到整个类的全部成员,而泛型方法只是影响这个方法内部而已,只是两种生命周期(也可以说是作用域)
定义泛型类:public class My<T>{
}
泛型方法:public <G>G sss(){}
Java反射Reflection技术:
* 程序员不需要得到java源代码就可以通过反射
* 获得java类图,java的成员逻辑关系。
* 也可以通过设计模式完成java类的实例的建立
* 方法的调用。
例如:
public class Reflection {
public Reflection(){}
public Reflection(String str){
}
public Reflection(Integer i){
}
public void Ref01(){
System.out.println("调用了这个方法");
}
public int Ref02(){
return 1;
}
public Integer Ref03(Integer i,Integer j){
return i+j;
}
}
public static void main(String[] args) throws IllegalAccessException, Exception {
// TODO Auto-generated method stub
new RefTest().RefTest01();
}
**
* 利用反射,得出一个类的类型,类里面的方法等等
* @author wanggang-pc
*
*/
public class RefTest {
public static void main(String[] args) throws IllegalAccessException, Exception {
// TODO Auto-generated method stub
new RefTest().RefTest01();
}
public void RefTest01() throws Exception, IllegalAccessException{
Class cs=Reflection.class;
Reflection ref=(Reflection)cs.newInstance();
Constructor[] cons= cs.getDeclaredConstructors();
//打印出所有构造方法
for(Constructor tmp: cons)
System.out.println(tmp.getName()+"--"+tmp.getTypeParameters());
//获取所有的变量
Field[] fs=cs.getDeclaredFields();
for(Field ff : fs)
System.out.println(ff.getName());
//获得所有方法
Method[] ms=cs.getDeclaredMethods();
for(Method t:ms)//打印所有方法和方法的返回值类型
{
System.out.println("方法名:"+t.getName()+" 返回值类型:"+t.getReturnType());
System.out.println("完整方法:"+t.toGenericString());
}
//调用指定函数的方法(有返回值的):
Method Ref03=cs.getDeclaredMethod("Ref03",Integer.class,Integer.class);
Integer i= (Integer)Ref03.invoke(ref,90,2);//调用方法,并且接收返回值
System.out.print(i);
}
}
本文出自 “微尘” 博客,转载请与作者联系!