泛型:主要是为了找到失去的类型

泛型适用于类级别,会有很多类型。根据泛型的别名变化而变化。

泛型类的变化会影响到整个类的全部成员,而泛型方法只是影响这个方法内部而已,只是两种生命周期(也可以说是作用域)

定义泛型类:public class My{


}

泛型方法:public 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);

}

}