class与泛型的简单应用 , 以及final与static final的区别

  1. 计数器类
package sky.java.clazz;
public class Count {
    // static 修改count , 使其在常量池中仅有一份.
    private static long count;
    // final修饰变量 , 则其不可修改. 因为count是确定的一个值. 执行完毕后++.
    private final long id = count++;
    @Override
    public String toString() {
        return Long.toString(id);
    }
}
  1. 泛型反射类的应用
package sky.java.clazz;
import java.util.ArrayList;
import java.util.List;
public class Adapter<T> {
    private Class<T> type;
    private Adapter(Class<T> type) {
        this.type = type;
    }
    public void set(int length) throws IllegalAccessException, InstantiationException {
        List<T> list = new ArrayList<>();
        for (int i = 0; i < length; i++) {
            list.add(type.newInstance());
        }
        System.out.println(list);
    }
    public static void main(String[] args) throws InstantiationException, IllegalAccessException {
        Adapter<Count> adapter = new Adapter<>(Count.class);
        adapter.set(10);
    }
}

static final 与 final 的区别 . 参考如下链接 , 即可
https://www.cnblogs.com/qducn/p/6140492.html

  1. 类型转换的几种方式
package sky.java.classcast;
public class CastTest {
    /**
     *  类型转换方式
     *      1. 传统转换 -> 强转
     *      2. class转换 , 如下
     *      3. instance 关键字
     *
     */
    public static void main(String[] args) {

        Parent p = new Child();
        Class<Child> c = Child.class;
        Child c1 = c.cast(p);
        System.out.println(c1);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34531925/article/details/81090143