夜光序言:
挺喜欢海贼王这部动漫~身为未来海贼王的伙伴,不要露出那种没出息的表情~
正文:
第一个类:
package com.Genius.sixteen;
/*夜光:我们写一个product类,之后利用反射进行实例化
并且描述此类声明了多少属性和方法~~*/
public class Product {
private String name;
private String price;
public Product(){
}
public Product(String name,String price){
this.name = name;
this.price = price;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getPrice(){
return price;
}
public void setPrice(String price){
this.price = price;
}
private int cost(){
return Integer.parseInt(price)/2;
}
}
第二个类:
package com.Genius.sixteen;
public class DescribeClass {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
// 夜光:我们调用product嗯~~
Class c = Class.forName("com.Genius.sixteen.Product");
Product p = (Product)c.newInstance();
System.out.println(c.getName()+"有"+c.getDeclaredFields().length+"个属性");
System.out.println(c.getName()+"有"+c.getDeclaredMethods().length+"个方法");
}
}
第三个类:
package com.Genius.sixteen;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class DescribeFiled {
public static void main(String[] args) {
// 之前的都是铺垫
// 现在利用反射来描述一下
// product类的属性,打印相应的描述信息
Product p = new Product();
Class c = p.getClass();
Field[] fs = c.getDeclaredFields();
System.out.println("product类有如下属性~~");
System.out.println("~~~~~~~~~~~~");
for(Field f:fs){
System.out.println(Modifier.toString(f.getModifiers())+""+
f.getType().getName()+""+f.getName());
}
}
}
第四个类:
package com.Genius.sixteen;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class DescribeFiled01 {
public static void main(String[] args) {
// 现在利用反射来描述一下
// product类的属性,打印相应的描述信息
// 考察Method类的使用
Product p = new Product();
Class c = p.getClass();
Method[] ms = c.getDeclaredMethods();
System.out.println("Productl类有如下方法:");
System.out.println("------------------");
StringBuffer sb = new StringBuffer();
// 下面我们写方法
for (Method m:ms){
sb.setLength(0);
sb.append(Modifier.toString(m.getModifiers())).append(
"").append(m.getReturnType().getName()).append("").
append(m.getName()).append("(");
Class[] ps = m.getParameterTypes();
for(int i=0;i<ps.length;i++){
sb.append(",");
}
}
sb.append(")");
System.out.println(sb);
}
}
第五个类:
package com.Genius.sixteen;
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
public class DescribeFiled02 {
public static void main(String[] args) {
// 现在利用反射来描述一下
// product类的属性,打印相应的描述信息
// 夜光:考察Constructor类的使用
Product p = new Product();
Class c = p.getClass();
Constructor[] cs = c.getDeclaredConstructors();
System.out.println("Product类有如下构造方法:");
System.out.println("----------------------");
StringBuffer sb = new StringBuffer();
for(Constructor ct :cs){
sb.setLength(0);
sb.append(Modifier.toString(ct.getModifiers())).append("").
append(ct.getName()).append("(");
Class[] ps = ct.getParameterTypes();
for(int i = 0;i<ps.length;i++){
sb.append(ps[i]);
if(i<ps.length){
sb.append(",");
}
}
sb.append(")");
System.out.println(sb);
}
}
}