首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在java中实例化递归定义的复合泛型类。

在Java中实例化递归定义的复合泛型类,可以通过以下步骤进行:

  1. 首先,需要定义一个递归的复合泛型类。复合泛型类是指类中包含自身类型作为参数的泛型。
代码语言:txt
复制
class RecursiveGeneric<T extends RecursiveGeneric<T>> {
    private T value;

    public RecursiveGeneric(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }

    public void setValue(T value) {
        this.value = value;
    }
}
  1. 接下来,可以实例化递归定义的复合泛型类。在实例化时,需要传入相应的类型参数。
代码语言:txt
复制
RecursiveGeneric<RecursiveGeneric<RecursiveGeneric<Integer>>> instance = 
    new RecursiveGeneric<>(new RecursiveGeneric<>(new RecursiveGeneric<>(42)));

上述代码中,我们实例化了一个三层嵌套的递归定义的复合泛型类,其中最内层的泛型参数为Integer类型。

  1. 对于复合泛型类的操作,可以通过调用相应的方法来进行。
代码语言:txt
复制
RecursiveGeneric<RecursiveGeneric<RecursiveGeneric<Integer>>> instance = 
    new RecursiveGeneric<>(new RecursiveGeneric<>(new RecursiveGeneric<>(42)));

int value = instance.getValue().getValue().getValue(); // 获取最内层的Integer值
System.out.println(value); // 输出: 42

instance.setValue(new RecursiveGeneric<>(new RecursiveGeneric<>(new RecursiveGeneric<>(100))));
int newValue = instance.getValue().getValue().getValue(); // 获取更新后的Integer值
System.out.println(newValue); // 输出: 100

上述代码中,我们通过调用getValue()方法获取最内层的Integer值,并通过调用setValue()方法更新该值。

需要注意的是,递归定义的复合泛型类在实例化时需要谨慎处理,以避免出现无限递归的情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java 定义和封装实例

为了让一个java 不同类型都能在程序调用,我们常常会将此类定义,重要特点是:作用是通用,仅此我们需要传入类型不一样。...一个具体实例是,当我们采用treeTable 显示页面的数据时,后台需要进行数据重新整合,此时针对好多都会进行创建一个产生treeTable 数据。...那么我们这时最好案方法就是封装一个通用,进行调用即可,传入你要整合数据类型和整合数据即可。...    private List nodes; //传入list参数     public TreeTableUtils(List nodes, T info) {//通过构造函数初始...            }         }         return children;     } } 其中涉及知识点:递归

1.8K10

Java详解:和Class使用。方法详细使用实例

3、接口定义及使用  接口上定义定义是一样,代码如下:     [java]     view plain     copy    interface Info{       ...方法一,我们中直接把Info接口给填充好了,但我们,是可以构造成,那我们利用来构造填充接口会是怎样呢?     ...然后使用时,就是构造一个实例过程,使用过程也不变。    ...我们定义三个变量T,K,U并且把第三个变量U用来填充接口Info。...唯一不同是,要在函数定义返回值前加上标识; 5、其它用法:Class传递及数组  (1)、使用Class传递Class对象 有时,我们会遇到一个情况,比如,我们使用

3.2K50

Java应用

1、 作用于编译时用于对象类型检查,运行时不起作用。 声明一对尖角括号 ,名称可以是任意字母。...2、 用于名末尾对进行声明; 在对该类进行实例化时,需要将指定为具体包装,此时,实例时,就可以起到编译时检查作用。...3.1、实现对接口指定具体包装  class GenericImpl implements GenericInterface{ @Override public...实现依然使用,但需要在实现后边,对进行重新声明 class GenericImpl2 implements GenericInterface{ @Override...当方法参数不固定时,也可以使用可变参数写法,来定义方法。

14420

JAVA——定义及其实例

//方法(成员函数) }        通过下面一个例子,简单理解一下Java定义 public class CAT{// public是修饰符,class是定义关键字,CAT是名...也叫成员函数 } 一个可以包含以下变量类型: l 局部变量:方法、构造方法或者语句块定义变量被称为局部变量。...变量声明和初始都是方法,方法结束后,变量就会自动销毁 l 成员变量:成员变量是定义,方法体之外变量。这种变量创建对象时候实例。...Java,使用关键字new来创建一个新对象。...如下所示,通过对象名点方式来访问([对象名].) /* 实例 */  Person p = new Person();  /* 访问变量 */  p.name;  /* 访问方法

1.2K30

Java基础教程(14)-Java枚举和注解

Java 由关键字enum 来定义一个枚举类型Java 定义枚举类型语句有以下特点:1) 使用关键字 enum ;2) 类型名称,比如这里 Season ;3) 一串允许值,4) 枚举可以单独定义一个文件...因为 enum 类型每个常量JVM只有一个唯一实例; 枚举 Enum equals 方法默认实现就是通过 == 来比较;枚举可以应用在 switch 语句中。...接口, 可以很好解决这个问题;就是定义一种模板,例如 ArrayList ,然后代码为用到创建对应 ArrayList;,既实现了编写一次,万能匹配,又通过编译器保证了类型安全...;使用时,把参数 替换为需要class类型不指定参数类型时,编译器会给出警告,且只能将 视为 Object 类型可以接口中定义类型,实现此接口必须实现正确类型编写时...类型必须⽤限定内类型来进⾏初始,否则会导致编译错误。⾮限定通配符表⽰可以⽤任意类型来替代,类型为 K T V E ?

9810

java:通过自定义ParameterizedType实现参数类型类型参数替换

需求说明 如果要动态构造一个参数对象(ParameterizedType),guava提供TypeToken工具可以部分实现这个功能: 比如下面这个例子(来自guava wiki TypeToken...实现这个需求最关键就是要有一个ParameterizedType接口实现,有了这个实现,你想怎么替换都成。...可惜,不论是jdk还是guava ParameterizedTypeImpl都不是public,所以没办法直接拿来用。所以就只能自己造一个。...别逗了,还真打算从头自己写一个啊,再说自己敢用么? 直接把jdkParameterizedTypeImpl代码抄来改改就可以啦 其实这个问题我也是琢磨了好长时间才想通。...完整代码如下(中文注释部分是我增加方法),代码中用到了guavaTypeToken工具实现,只是为了少写些代码。

4.6K80

json 反序列多层嵌套java Type类型笔记

json 反序列多层嵌套javaType类型笔记 val typeRef = TypeRef() val result = JSON.parseObject...) 参考文章 https://www.cnblogs.com/liqipeng/p/9148545.html 使用springmvc时,我们通常会定义类似这样通用与前端进行交互,以便于前端可以做一些统一处理...但是如果rest接口消费端就是java呢,java类型擦除却容易引入一些障碍。...//注意,某些情况下,返回数组为空。如果此类型表示嵌套在参数类型非参数类型,则会发生这种情况。...关于Type Java SE 1.5新特性,Type也是1.5才有的。它是java加入之后为了扩充类型引入

8.7K20

Java-ECJ和Javac处理上一点区别

背景 ECJ(Eclipse Compiler for Java)就是Eclipse自带java编译器。 公司项目都是Eclipse上面做。...自己用了一段时间Idea觉得很爽,准备换过来写,发现公司基盘报错了。调查发现是方面的异常。整理如下。 1. 问题 公司源码肯定不能放,把问题整理之后,关键几个UML为: ?...要在Idea编译就需要把Idea编译器换成Eclipse: Preferences > Build, Execution, Deployment > Java Compiler > User Compiler...后记 看起来javac比ECJ进行了更严格检查。但是问题不止于此,整理问题过程想到以下问题待思考,记下来以后学习: 项目部署用Tomcat,依赖也是官方jdk,为什么不会报错呢?...多数文章只会介绍使用,而Class和基础性ClassJava规范里区别究竟是什么呢?

70650

深入分析Java反射(一)-核心库和方法

JDK对和反射相关库集中java.lang.reflect包和java.lang包java.lang.reflect包和java.lang包是开发者可以直接使用,部分java.lang.reflect...如果想获取一个所有修饰符方法,包括所有父方法,那么建议递归调用getDeclaredMethods()(所谓递归调用就是一直追溯目标递归调用getDeclaredMethods()方法直到父为...Type接口 java.lang.reflect.Type接口是Java中所有类型共同父,这些类型包括原始类型、类型、数组类型、类型变量和基本类型,接口定义如下: public interface...我们新建一个时候,这个可以使另一个定义成员、构造方法定义内部类、方法定义内部类。可以通过当前反向获取定义当前、构造或者方法,这三种情况对应上面三个方法。...() 获取定义参数类型变量 Class<?

89631

Android 序列框架 Gson 原理分析,可以优化吗?

; @Until 注解: 声明具体或字段上,声明字段终止序列版本。...序列化时,首先使用反射获取字段值,再使用字段 BoundFiled 序列反序列化时,首先创建对象实例(下文会讨论如何创建),再使用依次使用字段 BoundField 反序列为字段类型值,...1、预置容器 TypAdapter ,会先通过容器类型 RawType 获取容器构造器,再根据实参 elementType 获取元素类型 TypeAdapter; 2、序列化时,先写入...由于 Java擦除,无法直接在 .class 语法上声明信息,Gson 方法是要求程序员创建匿名内部类,由 Gson 在运行时通过反射获取声明上信息。...原理是 Class 文件 Signature 属性会保持签名信息,而 TypeToken 只是一个工具,内部通过反射获取签名信息并返回 Type 类型。

2.1K50

scala 类型 最详细解释

scala 是一个强类型语言,但是在编程时可以省略对象类型. java对象类型(type)与(class)信息 jdk1.5 前 类型与是一一映射,一致类型就一致. 1.5 后引入了,jvm...是面向对象系统里对同一数据抽象,没有之前,类型系统不存在高阶概念,直接与一一映射,而出现之后,就不在一一映射了。...类型投影(type projection) scala里,内部类型(排除定义object内部),想要表达所有的外部类A实例路径下B类型,即对 a1.B 和 a2.B及所有的 an.B类型找一个共同父类型...父类型 Java里表示某个类型是Test类型父类型,使用super关键字: //或用通配符形式: <?...,初始 0 ,(), 0.0 进行初始 然而自定义值类型进行初始,创建一个数组后是用 null 进行填充.

83410

Flink DataStream 类型系统 TypeInformation

使用最多可以分为如下几类,如下图所示: 从图中可以看到 Flink 类型可以分为基本类型、数组类型、复合类型、辅助类型以及。...1.3.1 Java Tuples 类型 Flink Java 接口中定义了元组(Tuple)供用户使用。...如果一个类型满足如下条件,Flink 就会将它们作为 POJO 数据类型: POJOs 必须是一个公有,Public 修饰且独立定义,不能是内部类; POJOs 必须包含一个 Public 修饰无参构造器...1.5 类型 那些无法特别处理类型会被当做类型处理并交给 Kryo 序列框架进行序列。如果可能的话,尽可能避免使用 Kryo。Kryo 作为一个通用序列框架,通常效率不高。 2....TypeInformation 那这么多数据类型, Flink 内部又是如何表示呢? Flink 每一个具体类型都对应了一个具体 TypeInformation 实现

3.7K51

Effective Java笔记(不含反序列、并发、注解和枚举)

最近把Effective Java复习了一遍,其中有比较多java最佳实践可以平时编程中用到。反序列、并发、注解和枚举这四章没看,并发这本书里讲比较简单,推荐java并发编程实战这本书。...3.序列时候必须声明中所有域都是transient和提供一个readResolve方法,否则每次反序列都会创建一个新实例 4.可以使用枚举来创建单例,这时候2、3麻烦都会消失 4.通过私有构造器强化不可实例能力...4.绝大部分情况下用复合替代继承,能隐藏被拓展细节,恶意避免被扩展api缺陷,被传染到拓展 4.要么为继承而设计并提供文档说明要么禁止继承: 1.要设计一个可被继承,需要做事情...接口只用于定义类型: 1.常量接口模式是不良模式 2.导出常量可以具体之中 7.用函数对象表示策略:策略模式 4. 1.不要在新代码中使用原生态类型: 1.每个定义了一 个原生态类型...,即不带任何实际参数,List原生态类型就是List 2.没有之前,所有的集合内都是一个Object数组,所以经常会出现将狗插入猫列表情况,而且还能运行很久。

932110

程序员必须掌握600个英语单词

、一般 一般、通用 generic algorithm 演算法 通用算法 getter (相对於 setter) 取值函式 global 全域(对应於 local) 全局...inner class 内隐类别 内嵌 instance 实体 实例 (根据某种表述而实际产生「东西」) instantiated 具现、实体(常应用於 template) 实例 instantiation...、一般 一般、通用 generic algorithm 演算法 通用算法 getter (相对於 setter) 取值函式 global 全域(对应於 local) 全局...inner class 内隐类别 内嵌 instance 实体 实例 (根据某种表述而实际产生「东西」) instantiated 具现、实体(常应用於 template) 实例 instantiation...改写、覆写 重载、改写、重新定义 derived class 重新定义虚拟函式 package 套件 包 pair 对组 palette 调色盘、组件盘、工具箱 pane 窗格 窗格

1.3K20

程序员应该掌握600个英语单词

、一般 一般、通用  generic algorithm 演算法 通用算法  getter (相对於 setter) 取值函式  global 全域(对应於 local) 全局 ...inner class 内隐类别 内嵌  instance 实体 实例  (根据某种表述而实际产生「东西」)  instantiated 具现、实体(常应用於 template) 实例  instantiation...、一般 一般、通用  generic algorithm 演算法 通用算法  getter (相对於 setter) 取值函式  global 全域(对应於 local) 全局 ...inner class 内隐类别 内嵌  instance 实体 实例  (根据某种表述而实际产生「东西」)  instantiated 具现、实体(常应用於 template) 实例  instantiation...改写、覆写 重载、改写、重新定义  ( derived class 重新定义虚拟函式  package 套件 包  pair 对组  palette 调色盘、组件盘、工具箱  pane 窗格 窗格

1.3K00
领券