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

访问泛型对象的非泛型成员

访问泛型对象的非泛型成员是指在Java等编程语言中,通过泛型类或接口的实例来访问其非泛型成员。泛型是一种参数化类型,它允许在类或接口声明时使用类型参数,而非具体的类型。非泛型成员是指不依赖于类型参数的成员,例如静态成员或非泛型方法。

在Java中,可以使用类名或实例名来访问非泛型成员。例如,对于一个泛型类MyClass<T>,可以使用以下方式访问其非泛型成员:

代码语言:java
复制
MyClass<String> myObj = new MyClass<String>();
MyClass.staticMethod(); // 访问静态成员
myObj.nonGenericMethod(); // 访问非泛型方法

需要注意的是,由于类型擦除的原因,在运行时无法获取泛型类型的实际类型参数。因此,如果非泛型成员依赖于类型参数,则需要在实例化时提供具体的类型参数。例如:

代码语言:java
复制
MyClass<String> myObj = new MyClass<String>();
myObj.genericMethod(); // 访问泛型成员,需要提供类型参数

总之,访问泛型对象的非泛型成员是一种常见的编程技巧,可以帮助开发人员更好地管理和组织代码。

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

相关·内容

【Java 简介 ( 类 | 方法 | 静态方法 | 类与方法完整示例 )

; java 与 C++ 模板 : Java 中 , 是仿照 C++ 中 模板 开发 , 目的是让开发者可以写出 通用 , 灵活 代码 ; 伪 : Java 中 , 是 伪..., Java 开发好之后 , 在 编译阶段 就 将相关信息消除 了 , 不会留到运行时 ; 类型 : 方法 : 方法有参数 , 方法参数 可以指定成一些 ; 类 :...; 其中 参数 , 返回值 类型是 T , 但 这个 T 是作为一个正常类型使用 , 并不是声明在 方法 中 ; 如果 类 , 接口 , 方法 是 类 , 接口 , 方法 , 则该...---- 方法 : 在方法 返回值前 , 使用 声明方法 , 是方法 ; 将某个类型作为参数传入 ; 个数 : 该方法是方法 , 且指定了 2 个 , 个数可以有很多个..., 多个之间 , 使用逗号隔开 ; 方法 与 类 中 : 不同 : 方法指定 T 与 类中 T 没有任何关系 , 这两个 T 可以是不同类型 ; 相同

14K30

【Java 用法 ( 类用法 | 方法用法 | 通配符 ? | 安全检查 )

getData2(T arg){ T data = arg; return data; } 指定方法 : 指定 方法 类 , 方法 声明..., 在调用时 方法名前面 声明 ; 这种用法很少见 ; // 指定 方法 类 // 方法 声明 , 在调用时 方法名前面 声明...Cat"); // 不推荐写法 Student student4 = new Student("Tom", 16, "Cat"); 使用 new 关键字创建对象...个数 , 个数可以有很多个 * 多个之间 , 使用逗号隔开 * * 方法指定 T 与类中 T 没有任何关系 *...类 // 方法 声明 , 在调用时 方法名前面 声明 student.

10.2K30
  • C#入门类、集合、方法、约束、委托

    .NET/C#面试手册:基础语法 .NET/C#面试手册:面向对象 .NET/C#面试手册:集合、异常、、LINQ、委托、EF!...第一次接触那还是在大二上学期时候,那会是学c#面向对象时候接触过集合,但尴尬是那会还没有“”这个概念,仅仅只停留在集合使用。...,而不使用集合类,例如ArrayList。...将类型参数化以达到代码复用提高软件开发工作效率一种数据类型。类是引用类型,是堆对象,主要是引入了类型参数这个概念。...定义主要有以下两种: 1.在程序编码中一些包含类型参数类型,也就是说参数只可以代表类,不能代表个别对象。(这是当今较常见定义) 2.在程序编码中一些包含参数类。

    2.5K30

    Java进阶:【】认识方法,类,接口和通配符

    什么是就相当于标签 形式: jdk1.5之后,用来解决元素类型不确定数据保存操作, 例如关于这个元素如何保存,如何管理等是确定,因此此时把元素类型设计成一个参数,这个类型参数叫做...对应类型都是引用类型不能是基本类型 类和接口 声明类时传入类型实参 创建对象时,传入类型实参 类型实参为空时,默认为Object类型 继承类: 1.父类不传入类型实参...,默认为Object类型 2.父类传入类型实参,子类既可以是类,也可以不是 3.父类传入类型实参,则子类必须是类,且子类类型形参列表必须包含父类类型形参列表 定义和实例化...构造器写法: 不同引用类型不可以互相赋值 如果不指定,就会被擦除,例子就是 类中静态方法不能使用类 不能直接使用数组创建,如果非要创建 方法 什么是方法...,不是带方法就是方法,方法有要求:这个方法参数类型要和当前类方法无关 换个角度:方法对应那个参数类型和当前所在这个类,是否为类,是啥,无关 方法定义时候

    3.4K10

    擦除)【java基础—-

    1.3 定义(类、方法(方法返回值是方法在普通类和类里)): 1.4特点: 对于特点(1)举个例子 : 没有使用异常抛出 对于特点(2)访问时不需要类型转换...T testMethod3(){return null} 1.4特点: (1)编译时即可检查,运行时抛出异常;      (2)访问时不需要类型转换(拆箱);      (..."); //添加String对象 list.add(1.22); //添加Double对象 for(Object object: list...我们在使用 list.add() 方法时,根据提示知道凡是Object对象都可以添加进去,但是要使用时候忘了添加过什么类型对象进去,根据提示强转过,但是由于添加进去一些类型不同,强转可以在编译时通过...对于特点(2)访问时不需要类型转换(拆箱),举例子List list = new ArrayList(); 查看ArrayList访问4方法get()源码,看到返回值类型是

    2.4K51

    接口,类和通配符

    最本质原因就是为了在使用接口,类,方法时候,可以将类型作为参数,进行类型参数传递。这样可以使程序编写更加灵活,在创建对象,调用方法时候动态指定类型,所以也可以理解为类型参数化。...加入传递是Student,那么上面三个方法分别是学生在跑路,获取一个学生对象,根据学校名称返回所有学生。使用接口,可以在实现时候才定义具体需要实现类型,使接口可以进行更高级抽象。...使用 由于方法中需要在定义类时候就指定,所以如果需要使用含有方法,必须在创建该对象时候就需要指定类型,因为使用时候必须指定类型,不论是普通参数还是参数。...在访问通配符List时候,集合里元素只能当做Object来访问,因为在定义时候只是一个通配符,不是具体类型,所以不能进行类型转换只能作为Object访问。 2.不能使用add方法。...如果我使用List作为参数,传入到printAllObject方法,运行完打印元素语句后,会往List类型集合里面新增一个Object类型对象,而Object又是Book类型父类

    2.3K20

    【Kotlin】 ① ( 类 | 参数 | 型函数 | 多参数 | 类型约束 )

    , 主构造函数之前 , 该参数 T 是 类型占位符 , 在 该类类中 可以使用 类型占位符 T 作为一个类 使用 , 可以 定义 T 类型成员属性 主构造函数中可以接收 T 类型实例对象作为参数...下面的代码中 , 声明了 Student 类 , 该类 接收 T 类型参数 , 在主构造函数中接收 T 类型参数 , 在该类中声明了 T 类型成员属性 ; class Student...---- 型函数 中 如果涉及到 匿名函数 参数 , 匿名函数 参数返回值 都是 的话 , 在该型函数 中可能需要使用多个 , 使用不同字母表示不同 ; 如果函数中 引入了新类型..., T 实际类型是 String 类型 , 在 logT 中 R 类型是 Double 类型 ; student2 实例对象中 , T 实际类型是 Int 类型 , 在 logT...子类 AK47 类 ; 在创建 Soldier 实例对象时 , 传入 子类 AK47 类实例对象 , 调用其重写父类 fire 函数 ; 代码示例 : class Soldier<T : Weapon

    2.8K10

    Java 擦除_擦除

    String>().getClass(); System.out.println(a1 == a2); } } 如果仅凭直觉来看,该程序可能会输出 false 这个结果,但在具体环境下运行时会输出...Java是使用类型擦除来实现。这表示在运行过程中任何和类型有关信息都会被擦除,所有在运行中 ArrayList和ArrayList具体信息都被擦除成它们原生类型即ArrayList类型。...由于擦除机制,不能用于显示地引用运行时类型操作之中,例如转型、new表达式和instanceof操作。...若在内部必须使用类型操作时,可以在运行时采用反射方法将正在运行类信息添加到内部,这种方法称为补偿。...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.4K40

    JAVA_静态方法及静态成员变量

    参考链接: Java中静态方法与实例方法 #1.类中静态方法不能使用类,而应该将该方法定义为方法  1.错误示范:  class demo{     public static...class demo{     public static T show(T temp) {         return temp;     } }  3.原因:     在java中只是一个占位符...就类而言,类实例化时才能传递真正类型参数,由于静态方法加载先于类实例化,也就是说类中还没有传递真正类型参数时,静态方法就已经加载完成。显然,静态方法不能使用/访问类中。 ...这和静态方法不能调用普通方法/访问普通变量类似,都是因为静态申明与静态申明生命周期不同。 ...#2.不能定义静态变量  1.原因:  由于静态变量在java程序一运行时就已经被载入内存,而此时它类型无法确定,而开辟空间必须知道类型,两者矛盾。

    5.9K20

    【Flutter】Dart ( 类 | 方法 | 特定类型约束 )

    创建对象 , 类型设置为 String 类型 Cache cache = Cache(); // 调用方法时 , 传入参数必须符合对应类型...){ // 创建对象 , 类型设置为 String 类型 Cache cache = Cache(); // 调用方法时 , 传入参数必须符合对应类型.../ 创建对象 , 类型设置为 int 类型 Cache cache2 = Cache(); // 调用方法时 , 传入参数必须符合对应类型 //...Person 对象 _achievement 私有成员 int get achievement => _achievement; /// set 方法 : 设置私有字段 achievement... set 方法, /// 让外界可以设置 Person 对象 _achievement 私有成员值 set achievement(int achievement){

    5.2K00

    知多少

    简介 是JDK 5引入概念,引入主要是为了保证java中类型安全性,有点像C++中模板。 但是Java为了保证向下兼容性,它全部都是在编译期间实现。...编译器执行类型检查和类型推断,然后生成普通字节码。这种就叫做类型擦除。 编译器在编译过程中执行类型检查来保证类型安全,但是在随后字节码生成之前将其擦除。 这样就会带来让人困惑结果。...本文将会详细讲解在java中使用,以避免进入误区。...接下来我们考虑情况,List 是不是 List父类呢?很遗憾,并不是。 我们得出这样一个结论:不是协变。 为什么呢?...所以我们在使用时候一些操作会遇到问题。 假如我们有一个类,类中有一个方法,方法参数是,我们想在这个方法中对参数进行一个拷贝操作。

    1.1K10

    Java基础(二)接口方法# 总结

    本文首发于个人网站:Java中(二) 可以应用于同一个类,该类可以针对多种类型使用,例如构建一个RedisTemplateService组件,用于处理当前应用中所有对象缓存操作。...这篇文章主要介绍应用于接口、方法和匿名内部类一些知识点和使用案例,也包括《Java编程思想》中对应练习题解读。 接口 应用于接口,是工厂方法设计模式一种应用。...在中,基本类型无法作为类型参数,但是Java提供了自动打包和拆包功能; 方法 知识点总结 如果使用方法可以取代将整个类(或接口)化,那么就应该只使用方法; static方法要使用能力...在使用时候,必须在创建对象时候指定类型参数值,但是在使用方法时候,不必指明参数类型。...:接口、方法 本节练习用代码:LearnJava

    3.3K30

    java边界

    一、实际类型   参可以使用实际类型。也就是类似于List,直接指定类型。这时候表现最容易理解,输入和输出都为实际类型。...其主要用处之一是在使用Java或第三方API类时,对参类型不同,但参具有继承关系,且主要关注其输入对象进行归纳。...那么无论我们提供对象是什么类型,只要是其指定类型或子类对象,那么毫无例外一定是其指定类型对象。...也叫参数化类型,顾名思义,通过给类型赋予一定参数,来达到提高代码复用度和减少复杂性目的。   在Java中,是作为语法糖出现。...并在相应地方自动生成checkcast字节码进行类型检查和转换,这样就既可以实现,又不需要在字节码层面的进行改动来支持。这样叫做伪

    2K10

    Go 约束

    Go 约束 目录 Go 约束 一、引入 二、最宽松约束:any 三、支持比较操作内置约束:comparable 四、自定义约束 五、类型集合(type set) 六、简化版约束形式...七、约束类型推断 八、小结 一、引入 虽然是开发人员表达“通用代码”一种重要方式,但这并不意味着所有代码对所有类型都适用。...2018 年 8 月由伊恩·泰勒和罗伯特·格瑞史莫主写 Go 第一版设计方案中,Go 引入了 contract 关键字来定义类型参数约束。...所以,在 Go 版本中,interface 语法也得到了一些扩展,也正是这些扩展给那些刚刚入门 Go Go 开发者带来了一丝困惑,这也是约束被认为是 Go 一个难点原因。...结合 Go 设计方案以及Go 语法规范,我们可以这么来理解类型集合: 每个类型都有一个类型集合; 接口类型类型类型集合中仅包含其自身,比如接口类型 T,它类型集合为 {T},即集合中仅有一个元素且这唯一元素就是它自身

    45510

    【Kotlin】总结 ★ ( 类 | 参数 | 型函数 | 多参数 | 类型约束 | 可变参数结合 | out 协变 | in 逆变 | reified 检查参数类型 )

    放在 尖括号 中 , 该参数放在 类名后 , 主构造函数之前 , 该参数 T 是 类型占位符 , 在 该类类中 可以使用 类型占位符 T 作为一个类 使用 , 可以 定义 T 类型成员属性...主构造函数中 , 传入了 T 类型 可变参数 对象 ; 如果要使用 成员属性 接收该 T 类型 可变参数 对象 , 则必须 使用 Array 类型对象进行接收 ; 代码示例...子类 对象 , 可以赋值给 参数 是父类 变量 , 前提是参数必须使用 out 关键字修饰 ; 使用 in 关键字 , 可以使 父类对象 赋值给 子类对象 ; 使用...out 关键字 , 可以使 子类对象 赋值给 父类对象 ; 下图中 父类范围 比 子类范围 大 , 如果 使用 in 关键字 , 则 范围大父类对象 赋值给 范围小 子类对象 ,...( 反之就会报错 ) 如果 使用 out 关键字 , 则 范围小子类对象 赋值给 范围大 父类对象 ; ( 反之就会报错 ) 使用了 out 协变 和 in 逆变 极大提高了程序扩展性

    3.9K10

    坦白说,度这个术语,我主要将其用于描述概念,对平时编写代码用处不是很大。不过了解这个概念还是有用。可以将声明视为度为0。 度是区分同名声明有效指标。...2.1.3 适用范围 并非所有类型或者类型成员都适用。对于类型,这很好区分,因为可供声明类型比较有限:枚举不能声明为,而类、结构体、接口以及委托这些可以声明为类型。...对于类型成员来说,就没那么界限分明了。有些类型成员因为使用了其他类型,看似成员,但实际不是。只需记住一条原则:判断一个声明是否是声明唯一标准,是看它是否引入了新类型形参。...方法和类型可以是,但以下类型成员不能是: 字段; 属性; 索引器; 构造器; 事件; 终结器。 下面举一个貌似但实际不然例子。...对于这些无法声明为类型成员,通常很难想象出它们如何才能成为。有时我也有编写构造器或者索引器需求,可最后往往是用一个方法就实现了同样功能。

    1.4K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券