package xxx.xxxx.demo;
public class FanXingZongJie {
public static void main(String[] args) {
F1 f1 = new F1();
f1.fun1("fun1");
F2<String> f2 = new F2<String>();
f2.fun2("fun2");
System.out.println(f2.fun3("fun3"));
F3<Integer> f3 = new F3<Integer>();
f3.set(1234);
System.out.println(f3.fun4());
F3.fun6("O(∩_∩);O哈哈~,我又变成String类型了,我和类Class<M>的泛型没有关系。。。");
F4.fun7(5678);
F5 f5 = new F5();
try {
System.out.println(f5.fun8(Class.forName("xxx.xxxx.demo.User")) instanceof User);//true
System.out.println(f5.fun8(User.class) instanceof User);//true
System.out.println(f5.fun8(new User().getClass()) instanceof User);//true
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
class F1 {
public <T> void fun1(T key) {// 是泛型方法 如果没有<T>就不知道 参数T key 中T类型从何而来
System.out.println("泛型方法 <T>:" + key);
}
}
class F2<K> {
public void fun2(K key) {// 不是泛型方法 K是声明 类的时候创建的类型
System.out.println("不是泛型方法:" + key);
}
public K fun3(K key) {// 同样不是泛型方法,因为 方法中没有加<K> K是声明类的时候加的
return key;
}
}
class F3<M> {
private M key;
// public static M val; 不能用static修饰泛型成员变量 静态方法和变量 不用实例化类就能调用。
public void set(M key) {
this.key = key;
}
public M fun4() {// 同样不是泛型方法,因为 方法中没有加<M> M是声明类的时候加的
return this.key;
}
// public static void fun5(M val) { //会出错误
// 因为泛型是要在对象创建的时候才知道是什么类型的,
// 而对象创建的代码执行先后顺序是static的部分,然后才是构造函数等等。
// 所以在对象初始化之前static的部分已经执行了,
// 如果你在静态部分引用的泛型,那么毫无疑问虚拟机根本不知道是什么东西,
// 因为这个时候类还没有初始化。因此在静态方法、数据域或初始化语句中,为了类而引用class F3<M>声明的泛型类型参数是非法的
// }
public static <N> void fun6(N val) {
System.out.println("static 静态方法中 声明的独立泛型<N>,可以使用。"+val);
}
}
class F4{
public static <H> void fun7(H key) {
System.out.println(key);
}
}
class User{
private String name;
private int 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 "User [name=" + name + ", age=" + age + "]";
}
}
class F5{
public <H>H fun8(Class<H> h) throws InstantiationException, IllegalAccessException {
H hs = h.newInstance();
System.out.println(hs);
return hs;
}
public <H> void fun9(Class<H> h) throws InstantiationException, IllegalAccessException {
H hs = h.newInstance();
System.out.println(hs);
}
}
相关推荐
Mac和VScode配置fortran
macOS系统 vscode fortran gfortran 终端
Java泛型
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参列表;普通方法的形参列表中,每个形参的数据类型是确定的,而变量是一个参数;在调用普通方法时需要传入对应形参数据类型的变量,若传入的实参与形参的数据类型不匹配会报错。那什么是参数化类型?以方法的定义为例,在方法标签中的形参的数据类型也设置为参数,在调用方法时再从外部传入一个具体的数据类型和变量。泛型的本质是为了将类型参数化,也就是说再泛型使用过程中,数据类型被设置为一个参数,在使用时再从外部传入一个数据类型;
Linux-ftrace-双nop机制的实现
linux-ftrace内核追踪-双nop机制的实现原理
JAVA泛型 及 可变参数
格式:修饰符 class 类名{ }
深入了解 CPU 的型号、代际架构与微架构!
深入了解 CPU 的型号、代际架构与微架构!
VESC电调高级调参指南:电机校准与性能优化实战解析
本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。
java泛型定义及使用
}…………}}}//使用//也就是在原来的T后面用逗号隔开,写上其它的任意大写字母即可。想加几个就加几个,比如我们想加五个泛型变量,那应该是这样的://字母规范:在定义泛型类时,我们已经提到用于指定泛型的变量是一个大写字母:}//定义泛型接口interface Info{ // 在接口上定义泛型// 定义抽象方法,抽象方法的返回值就是泛型类型}//实现接口。
内网开发必备:银河麒麟V10离线安装全流程(含镜像挂载+yum源配置)
本文详细介绍了在内网隔离环境下,银河麒麟V10操作系统的离线安装与部署全流程。核心内容包括官方镜像的获取与校验、使用mount命令进行镜像挂载的详细步骤与问题排查,以及构建稳定、可维护的本地Yum软件仓库的完整方法论。通过实战案例演示了如何基于本地源部署LNMP环境,并提供了高级配置技巧与常见故障排除指南,旨在帮助运维人员系统性地构建高可用的内网软件供应链。
java泛型详解
不是限制 addAll() 的参数是一个与您将要添加到的集合包含相同类型的集合,而有可能建立一个更合理的约束,即传递给 addAll() 的集合的元素 适合于添加到您的集合。如果您试图将 List 传递给一个接受 List 的方法,它将能够工作,但是编译器将会发出一个可能丧失类型安全的警告,即所谓的“unchecked conversion(不检查转换)”警告。这可以让您消除代码中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中。
银行一表通监管报送系统详解
国家金融监管总局对于“一表通”的总体描述为:通过建立一套明细级、标准化的数据体系和汇总计算规则,将银行机构传送至监管可信区的业务明细数据汇总生成财务指标、监管指标和监管报表,大幅提升监管数据时效性,统一数据标准,实现数据间的穿透和整合,同时改变机构多头报送数据模式,减轻机构报送负担。
智能车图像处理3-入门级分析2 ---直道冲刺
PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。
Java 中的泛型(两万字超全详解)
博主将用 优快云 记录 Java 后端开发学习之路上的经验,并将自己整理的编程经验和知识分享出来,希望能帮助到有需要的小伙伴。博主也希望和一直在坚持努力学习的小伙伴们共勉!唯有努力钻研,多思考勤动手,方能在编程道路上行至所向。由于博主技术知识有限,博文中难免会有出错的地方,还望各位大佬包涵并批评指正,博主会及时改正;如果本文对小伙伴你有帮助的话,求求给博主一个赞支持一下,可以一起交流,一起加油!!Java泛型详解,史上最全图文详解java 泛型全解 - 绝对最详细Java 泛型,你了解类型擦除吗。
Open3D (C++)球旋转算法(BPA)三维建模
球旋转算法用于点云三维建模的C++代码实现。
Java 泛型详解:泛型类、泛型接口、泛型方法
泛型允许我们使用类型参数Type parameter,它用一个自定义的标识符(T、V、E)来代表一个类型,用< >括住,放在类名后面。然后在类定义中所有使用该类型的地方都用这个标识符来代替,因为在定义这个类的时候还不知道这个具体类型到底是哪个类型。 可使用类型参数Type parameter的地方:声明变量、形参、返回值、强制类型转换。注意不可以用于构造器。 在使用泛型类时(区别于定义泛型类时 泛型允许我们使用类型参数Type parameter,它用一个自定义的标识符(T、V、E)来代表一个类型,...
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
Java 泛型详解:泛型类、泛型接口和泛型方法
Java 泛型 一、概述 Java 泛型(generics)是 JDK 1.5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。 1.1 什么是泛型? 泛型,即参数化类型。 一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
Java 泛型
的区别:基本泛型T是用于定义,将数据类型参数化,不能用于实例化。上下界通配符其实涉及到 Java 的多态属性,上下转型的可行性,子类实例可以转换成父类实例,但是父类实例却不一定能转换成子类实例,只有本身就是该子类实例向上转型的父类实例才可以向下转型为子类实例。创建在放方法上的泛型是在真正调用方法时确定,一般都由传入的参数确定,包含这个方法的类创建对象时,并不会确定方法上的类型,一定在调用方法时确定。super A>限制类型的下限,只能向下转型,可以写,但是没法读,因为父类型不确定,没法向上转型。
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
Java 泛型详解:泛型类、泛型方法、泛型接口、类型擦除与类型通配符
本文全面解析Java泛型,这是JDK1.5引入的类型参数化机制,通过`<类型>`语法实现编译期类型安全,运行期经“类型擦除”保障性能。内容涵盖泛型类、方法、接口的定义、语法与实现方式,详解无界、上界、下界通配符的特性与用法,分析类型擦除原理及泛型关键规则(如参数化类型无继承、泛型运行时擦除等)。掌握泛型可提升代码安全、可读性与复用性,是Java开发者进阶必备技能。
JDK1.5后增加了泛型,那么为什么要有泛型呢?我们该如何自定义泛型结构呢?
Java的JDK1.5后增加了泛型,那么为什么要有泛型呢?我们该如何自定义泛型结构呢?
Java泛型:泛型类、泛型接口、泛型方法
文章目录 泛型类 泛型类的继承 泛型与内部类 泛型接口 泛型接口的实现 泛型方法 形参的类型参数通过实参确定 泛型方法被多个形参推断 返回值的类型参数通过方法返回值赋值的对象确定 形参和返回值用了同一个类型参数 泛型方法定义中的类型推断 静态方法不可以使用泛型类定义的类型参数 泛型方法返回值赋值给形参 可变参数和泛型方法 泛型类和泛型方法 泛型类中的成员泛型方法和静态泛型方法 匿名内部类和泛型 个人理解总结 ...
Java泛型的使用与理解。泛型类、泛型接口、泛型方法
1. 概述 泛型,即参数化类型。一提到参数,最熟悉的就是定义方法是有形参,调用方法时有传递实参。那么参数化类型如何理解? 顾名思义,就是将类型由原来的具体类型将其参数化,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用的时候传入具体的类型(类型实参) 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。 2.
JAVA泛型作用域与静态方法泛型使用笔记
实例方法:优先复用类泛型,避免重复声明;静态方法:必须显式声明方法级泛型,无法使用类泛型;泛型名只是占位符<T><R>无本质区别,关键是实际绑定的类型一致;避免遮蔽:实例方法不要重复声明与类泛型同名的方法泛型。如果确实需要方法拥有独立的泛型参数(与类泛型无关),应使用不同的泛型名称(如<R><E>public class Result<T> { // 类级泛型<T>// 方法用独立泛型<R>,不遮蔽类的<T>// 类的<T>不受影响<T>是类的泛型,<R>
Java自定义泛型方法
泛型方法使得该方法能独立于类而产生变化。我们可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。 以下是一个基本的指导原则: 无论何时,只要你能做到,你就应该尽量使用泛型方法。也就是说,如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法,因为它可以使事情更清楚明白。另外,对于一个static的方法而言,无法...
[疯狂Java]泛型:泛型方法、泛型方法VS类型通配符(?)
1. 定义泛型方法: 1) 如果你定义了一个泛型(类、接口),那么Java规定,你不能在所有的静态方法、静态初块等所有静态内容中使用泛型的类型参数!!例如: class A { public static void func(T t) { // 错误!在所有静态内容中不得使用泛型的类型参数 } }!!这个原因会在泛型底层原理中详细介绍,这里就只要先记住这个规则就行了!!
Java中的泛型
Copyright©stonee 在JDK5之前,为了实现参数类型的任意化,都是 先通过Object类型引入,再进行强制类型转换 来处理。这种方式不仅使得代码臃肿,还要求程序员必须对实际所使用的参数类型已知的情况下才能进行,否则容易引起ClassCastException异常。 我们尝试比较一下通过Object类实现参数类型任意化和通过泛型实现参数类型任意化的栗子: 通过Object类来...
JAVA泛型(泛型方法和泛型类)
JAVA泛型 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数 你定义了一个泛型(类、接口),那么Java规定,你不能在所有的静态方法、静态初块等所有静态内容中使用泛型的类型参数! 泛型不能用在静态方法等; 泛型方法 该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用 泛型方法有一个类型参数声明部分(由尖括号分隔)表示参数的类型, 该类型参数声明部分放在在方法返回类型
Java-SE-泛型编程-总结/java
泛型是Java提供的一种模板机制,允许我们编写可以处理任意类型的代码。类型安全:泛型通过编译器进行类型检查,避免了强制转换的错误。继承关系:可以向上转型为接口类型,但不能变更类型参数的实际类型。通过使用泛型,我们可以编写更安全、更灵活的代码,而无需为每种类型重复实现类。这是泛型在Java中的核心价值。在Java中,如果使用ArrayList而不指定泛型类型,泛型实际上被视为Object// 强制转型这种情况下,只能把泛型当作Object使用,失去了泛型的优势。
2409



被折叠的 条评论
为什么被折叠?



