1、使用URLConnection去下载网上任意一个资源2、反射。分别使用一下5种方式获取Class对象

1、使用URLConnection去下载网上任意一个资源

BufferedOutputStream bos   = null;
BufferedInputStream bis= null;
URL url = null;
HttpURLConnection urlConnection = null;
try {
    url = new URL("https://www.jingdong.com");
    urlConnection = (HttpURLConnection) url.openConnection();
    InputStream is = urlConnectio.getInputStream();
    bis = new BufferedInputStream(is);
    FileOutputStream fos = new FileOutputStream(" wenjian");
    bo = new BufferedOutputStream(fos);
    int i = 0;
    while ((i = bis.readLine()) != -1) {
        bos.write(i);
    }

} catch (Exception e) {
    e.printStackTrace();
}finally {
    urlConnectio.disconnect();
    if (bo!=null){
        try {
            bo.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    if (bi!=null){
        try {
            bi.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2、分别使用一下5种方式获取Class对象
    1 使用数据类型.class的方式可以获取对应类型的Class对象。
    2 使用引用/对象.getClass()的方式可以获取对应类型的Class对象。
    3 使用包装类.TYPE的方式可以获取对应基本数据类型的Class对象。
    4 使用Class.forName()的方式来获取参数指定类型的Class对象。
    5 使用类加载器ClassLoader的方式获取指定类型的Class对象。

public static void main(String[] args) throws ClassNotFoundException {
    Class c1=String.class;
    System.out.println("c1:"+c1);


    String s="ss";
    c1=s.getClass();
    System.out.println("c1:"+c1);


    c1=Integer.TYPE;
    System.out.println("c1:"+c1);
    c1 = Class.forName("java.lang.String");
    System.out.println("c1:"+c1);


    ClassLoader classLoader = zuo02.class.getClassLoader();
    c1=classLoader.loadClass("java.lang.String");
    System.out.println("c1:"+c1);

3、Constructor练习
     1.使用原始方式以无参形式构造Person类型的对象并打印
    2.使用反射机制以无参形式构造Person类型的对象并打印        
    3.使用原始方式以有参方式构造Person类型的对象并打印
    4.使用反射机制以有参方式构造Person类型的对象并打印
    5.使用反射机制获取Person类中所有的公共构造方法并打印 

 public static void main(String[] args) throws Exception {
        Person p1 = new Person();
        System.out.println(p1);
        BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("1.txt")));
        String s = br.readLine();
        Class c1 = Class.forName(s);
        Object o = c1.newInstance();
        if (o instanceof  Person){
            Person p2 = (Person) o;
            System.out.println("反射机制 " + p2);
        }
        br.close();
        Person p3 = new Person("as" , 66);
        System.out.println("原始方式 " + p3);
        Class c3 = Person.class;
        Constructor constructor = c3.getConstructor(String.class, int.class);
        Object o1 = constructor.newInstance("个数", 33);
        System.out.println("反射: " + o1);
        Constructor[] constructors = c3.getConstructors();
        for (Constructor ct : constructors){
            System.out.println(ct.getModifiers());
            System.out.println(+ ct.getName());
            Class[] parameterTypes = ct.getParameterTypes();
            for (Class cs : parameterTypes){
                System.out.print(cs + " ");
            }
        }
    }
}
class Person {
    private String name ;
    private int age ;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值