java通用操作

电脑杂谈  发布时间:2020-07-26 18:06:44  来源:网络整理

classforname 泛型_jdbc classforname_classforname 泛型

时间: 2020-07-24

classforname 泛型_classforname 泛型_jdbc classforname

本文向您介绍Java通用操作,主要包括Java通用操作的用法示例classforname 泛型,应用技巧,基本知识点摘要和需要注意的事项. 它具有一定的参考价值classforname 泛型,需要它的朋友可以参考它.

classforname 泛型_jdbc classforname_classforname 泛型

1个界面

classforname 泛型_jdbc classforname_classforname 泛型

package com.example.astest.demo.gener;
// //接口的泛型是最容易定义和实现的,子类可以随意定义其类型及重写其方法 9成的泛型在接口
//泛型的直接用途是强转 和 判断类型 instanceof
public interface Generator<R> {
    public R next();
}

2实现类一

package com.example.astest.demo.gener;
/**
 * @Auth
 * @classname GeneratorImpl
 * @Description //TODO
 * @Date 2:06 PM 24/07/2020
 * version 1.0
 **/
//如果实现的子类没有带泛型会报错 反省写别的也会报错
public class GeneratorImpl<T> implements Generator<T> {
    @Override
    public T next() {
        return null;
    }
}

3个实施第二类

package com.example.astest.demo;
import com.example.astest.demo.gener.Generator;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
 * @Aut
 * @classname Generic
 * @Description //TODO
 * @Date 5:09 PM 21/07/2020
 * version 1.0
 **/
@Data
@Slf4j
public class Generic<E>  implements Generator<String> {
    //  子类的数组可以直接给父类数组赋值 同样适用于泛型 所有类继承于Object
    ArrayList[] a={};
    List[] numbers=a;
    // ArrayList  public boolean add(E e) {
    //        ensureCapacityInternal(size + 1);  // Increments modCount!!
    //        elementData[size++] = e; 这里的elementData 是个Object数组
    //        return true;
    //    }
    private E taget;
    public Generic(E taget) {
        this.taget = taget;
    }
    public Generic() {
    }
    public E getTaget(){
        return  taget;
    }
//此处的?和Number、String、Integer一样都是一种实际的类型,可以把?看成所有类型的父类。是一种真实的类型。
    //但是通配符代表的是某个字母泛型 而不能单独作为一种泛型 例如用Generic<?>代替Generic<E>  或者付给一个
    //真实的类型如 Generator<String>
    public void showKeyValue1(Generic<?> obj){
        log.debug("泛型测试","key value is " + obj.getTaget());
       // obj.setTaget(45);  这个语法是错误的,因为<?>代表不了任何类型
     //   obj.setTaget(taget);  错误 虽然target是E类型但也不是<?>

    }
    public Generic<E> returnMethod(E a){
        return new Generic<E>(a);
    }
   //这里不能改变返回类型 还有泛型改字母不算重载 
    public ArrayList<E> returnMethod(){
        return new ArrayList<E>();
    }
    // 返回值的泛型已经改变
    public static <T> Generic<T> returnMethodTwo(){
        return new Generic<>();
    }
    public <T> void printMsg( T... args){
        for(T t : args){
            log.debug("泛型测试","t is " + t);
        }
    }
    @Override
    public String next() {
        Random rand = new Random();
        return rand.ints().toString();
    }
    public <T> T genericMethod(Class<T> tClass ) throws IllegalAccessException, InstantiationException {
      // T inst = (T) ca.newInstance(initargs);
        return  tClass.newInstance();
    }
}

4个测试类别


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-288288-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 杨丽停
        杨丽停

        哭

      • 伍启忠
        伍启忠

        否则后患无穷

      • 代梦莹
        代梦莹

        以习主席为首的党中央采取一系列的改革措施和发展新思维挑战了美国的地位

      热点图片
      拼命载入中...