首页 > 编程语言 >Java:泛型方法、泛型类、泛型接口、类型通配符

Java:泛型方法、泛型类、泛型接口、类型通配符

时间:2022-12-26 11:02:58浏览次数:57  
标签:box Box Java void 通配符 value 泛型 public

(目录)

要求:

JDK >= 1.5

泛型方法

package com.example.demo;

import java.io.IOException;

public class Demo {

    // 泛型方法
    public static <T> void printT(T value) {
        System.out.println(value);
    }

    public static void printObject(Object value) {
        System.out.println(value);
    }

    public static void main(String[] args) throws IOException {
        Demo.printT("Tom");
        Demo.printT(23);

        Demo.printObject("Tom");
        Demo.printObject(23);
    }
}

泛型类

package demo;

public class Box {

    private Object value;

    public void set(Object value) {
        this.value = value;
    }

    public Object get() {
        return this.value;
    }

    public static void main(String[] args) {
        Box box = new Box();
        box.set("Tom");
        String value = (String) box.get();
        System.out.println(value);
    }
}

使用泛型,可以不做类型强制转换

package demo;

public class Box<T> {

    private T value;

    public void set(T value) {
        this.value = value;
    }

    public T get() {
        return this.value;
    }

    public static void main(String[] args) {
        Box<String> box = new Box<>();
        box.set("Tom");
        String value = box.get();
        System.out.println(value);
    }
}

泛型接口

package demo;

interface IBox<T> {

    void set(T value);

    T get();
}


class Box<T> implements IBox<T> {
    private T value;

    @Override
    public void set(T value) {
        this.value = value;
    }

    @Override
    public T get() {
        return this.value;
    }
}

public class Demo {
    public static void main(String[] args) {
        Box<String> box = new Box<>();
        box.set("Tom");
        String value = box.get();
        System.out.println(value);
    }
}

类型通配符

public class Demo {
    public static void main(String[] args) {
        Box<String> box = new Box<>();

        printBox(box);
    }

    public static void printBox(IBox<?> box) {
        System.out.println(box);
    }
}

参考 https://www.runoob.com/java/java-generics.html Java学习路线-7:泛型

标签:box,Box,Java,void,通配符,value,泛型,public
From: https://blog.51cto.com/mouday/5968659

相关文章

  • Java编程思想17
    第二十一章:并发基本的线程机制  并发编程使我们可以将程序划分为多个分离的、独立运行的任务。通过使用多线程机制,这些独立任务(也被称为子任务)中的每一个都将由执行线程......
  • Java编程思想18
    从任务种产生返回值:Runnable是执行工作的独立任务,但是它不返回任何值。如果你希望在任务完成时能够返回一个值,那么可以实现Callable接口而不是Runnable接口。在JavaSE5中......
  • Java编程思想19
    共享受限资源1.不正确访问资源  考虑下面的例子,其中一个任务产生产生偶数,而其他任务消费这些数字。而这些消费者任务的唯一工作就是校验偶数的有效性packageconcurr......
  • 实现JNI的另一种方法:使用RegisterNatives方法传递和使用Java自定义类
    除了使用传统方法实现JNI外,也可以使用RegisterNatives实现JNI。和传统方法相比,使用RegisterNatives的好处有三点:1、C++中函数命名自由,不必像javah自动生成的函数声明那样,拘......
  • 【HMS Core】升级SDK报错app_id failed: java.io.FileNotFoundException: agconnect-s
    问题描述:升级推送服务最新版SDK报错app_idfailed:java.io.FileNotFoundException:agconnect-services.json问题分析:从日志来看,是没有找到agconnect-services.json文件。......
  • Java小白必会!Intellij IDEA安装、配置及使用详细教程
    一.前言所谓工欲善其事必先利其器,一个好的工具对工作效率的提升是有非常大的帮助的。而在咱们程序员开发时,一个好的集成开发工具对于提高我们的编码效率和编程体验来说也是......
  • Java版小米商城项目简介
    小米商城课程详情1.课程介绍本套课程主要是基于Servlet、HTML、JS、Ajax、JSP、MySQL、JDBC、Tomcat、微信支付等web技术,仿照小米商城来实现一个电子商城项目。注意:本课程配......
  • 1:Web开发入门-Java Web
    (目录)1.1什么是Web应用程序在Sun的JavaServlet规范中,对JavaWeb应用作了这样定义:“JavaWeb应用由一组Servlet、HTML页、类、以及其它可以被绑定的资源构成。它可以在......
  • java的异常体系图
    本文主要讲述java的异常体系图老韩图解:  自己理解: ......
  • JavaVM & JNIEnv
    JNIEnv提供了大多数的JNI函数。你的本地方法都会接收JNIEnv作为第一个参数。JNIEnv用于本地线程存储。因此,你不能在线程间共享同一个JNIEnv。如果一个代码段没有其他方式获......