当前位置: 首页 > 面试题库 >

类型变量的Java类对象

晏和风
2023-03-14
问题内容

有没有办法从Java通用类的类型变量中获取Class对象?像这样:

public class Bar extends Foo<T> {
    public Class getParameterClass() {
        return T.class; // doesn't compile
    }
}

此类型信息在编译时可用,因此不受类型擦除的影响,因此,从理论上讲,应该有一种方法来实现此目的。是否存在?


问题答案:

这有效:

public static class Bar extends Foo<String> {
  public Class<?> getParameterClass() {
    return (Class<?>) (((ParameterizedType)Bar.class.getGenericSuperclass()).getActualTypeArguments()[0]);
  }
}


 类似资料:
  • 本文向大家介绍Java中的变量类型,包括了Java中的变量类型的使用技巧和注意事项,需要的朋友参考一下 变量不过是用于存储值的保留内存位置。这意味着当您创建变量时,会在内存中保留一些空间。 根据变量的数据类型,操作系统分配内存并确定可以在保留内存中存储的内容。因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符。 Java有两种可用的数据类型- 原始数据类型 引用/对象数据类型

  • 怎么确定一个变量是什么类型的呢?大家可以用 type() 函数来检查。Lua 支持的类型有以下几种: Nil 空值 所有没有使用过的变量,都是 nil。nil 既是值,又是类型。 Boolean 布尔值 true 或 false Number 数值 在 Lua 里,数值相当于 C 语言的 double String 字符串 如果你愿意的话,字符串是可以包含 '\0' 字符的 Table 关系表类型

  • 变量只不过是我们的程序可以操作的存储区域的名称。 Pascal中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局; 可存储在该内存中的值范围; 以及可以应用于变量的操作集。 变量的名称可以由字母,数字和下划线字符组成。 它必须以字母或下划线开头。 Pascal not case-sensitive ,因此大写和小写字母在这里意味着相同。 根据前一章中解释的基本类型,将有以下基本变量类型

  • 变量只是用于存储值的保留内存位置。 这意味着当您创建变量时,您在内存中保留了一些空间。 根据变量的数据类型,解释器分配内存并决定可以存储在保留内存中的内容。 因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符。 将值分配给变量 Python变量不需要显式声明来保留内存空间。 为变量赋值时,声明会自动发生。 等号(=)用于为变量赋值。 =运算符左边的操作数是变量的名称,=运算符

  • 变量为我们提供了程序可以操作的命名存储。 Java中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局; 可存储在该内存中的值范围; 以及可以应用于变量的操作集。 必须先声明所有变量才能使用它们。 以下是变量声明的基本形式 - data type variable [ = value][, variable [ = value] ...] ; 这里data type是Java的数据类型之

  • PHP在内核中是通过zval这个结构体来存储变量的,它的定义在Zend/zend.h文件里,简短精炼,只有四个成员组成: struct _zval_struct { zvalue_value value; /* 变量的值 */ zend_uint refcount__gc; zend_uchar type; /* 变量当前的数据类型 */ zend_uchar