integer type-java 反射的一些困惑

问题描述

java 反射的一些困惑

今天学习java反射,碰到一个小问题一直想不明白。

就是Integer.class和Integer.TYPE有什么区别?

这两者都是取得Integer的字节码吗?

解决方案

应该都是取Class的引用的,但是取得是不同的Class的引用。

Interger.TYPE == int.class 是基本类型int的Class的引用,int是基本类型在虚拟机运行时就已经加载了他的Class.

Interger.class 是int的封装类Interger的引用。 因此二者是不同的。

解决方案二:

static Class TYPE
The Class object that represents the primitive type int.

从java 文档中可以看出,他代表的就是Integer字节码, 而Integer.class 就更不用说了

解决方案三:

jdk文档上的

TYPE
public static final Class TYPE 表示基本类型 int 的 Class 实例。

输出
System.out.println(Integer.class); class java.lang.Integer
System.out.println(Integer.TYPE); int

下面是Integer.TYPE的源码
public static final Class TYPE = (Class) Class.getPrimitiveClass("int");
表示基本类型 int 的 Class 实例,这里注意是基本类型,这样应该能懂了吧

解决方案四:

我们菜鸟水平,一般不会用到。 class字节码是在反射技术中用到的,通常是架构师的级别。如果你感兴趣,可以去看下java 反射技术

解决方案五:

一个是取字节码 一个取类型。。。不可以同日而语

解决方案六:

取的是基本类型int的Class不是Integer的

时间: 2024-11-03 19:11:26

integer type-java 反射的一些困惑的相关文章

no suitable HttpMessageConverter found for request type [java.lang.Integer]

今天在使用Spring Template的时候遇到了这个异常: no suitable HttpMessageConverter found for request type [java.lang.Integer] Google了一下然后在stackoverflow上面找到了解决方案: I have a method in Spring rest service. @RequestMapping(value = "test/process", method = RequestMetho

使用Java反射机制确定基本数据类型属性

Java反射机制提供了一种强大的应用程序接口来帮助我们在运行时检测和执行对象上的操作.该机制允许程序员审视一个未知对象,并且获得它的属性,例如对象上的方法,JavaBean的属性以及继承关系等. Java中有两种类型的值,一种是类类型,它把对象的属性定义在一个类中.类类型是面向对象结构的基本组成部分.第二种类型的值是基本数据类型.反射类型通常用于类类型,但是,其实它也可以很方便应用到Java的基本类型上. Java中的基本类型继承自基于C的语法,其中包括boolean.byte.short.in

使用Java反射(Reflect)、自定义注解(Customer Annotation)生成简单SQL语句

使用Java反射(Reflect).自定义注解(Customer Annotation)生成简单SQL语句 这次给大家介绍一下在Java开发过程中 使用自定义注解开发: 主要知识点:             1.反射            主要用于提取注解信息             2.自定义异常  主要是为了自己自定义一个异常信息             3.自定义注解  本次重点 学会如何自定义注解以及如何使用反射提取注解信息运用到实际开发 下图表示在Java中注解的含义以及注解的分类和如

Java反射详解

对象的编译类型和运行类型 对象有编译类型和运行类型 1 Object obj = new Date(); 编译类型:Object运行类型(其实就是obj对象真实的类型):Date需求:根据对象obj调用Date类中的一个方法,toLocaleString,如何来做?obj.toLocaleString()代码在编译阶段去编译类型Object中检查是否有该方法,若没有,编译失败. 解决方案:强制转为obj为Date类型,前提:必须知道对象的真实类型是什么? 12 Date d = (Date)ob

大神解释一下java反射有什么作用?

问题描述 大神解释一下java反射有什么作用? 我疑问的地方就是,已经创建了类还有属性,为什么还要用复杂的反射去调用,直接创建 不好吗? 解决方案 比如说,eclipse这个软件是先开发好的,你的程序是后写的.为什么eclipse能给你类型的上下文关键字提示,当你输入一个对象,会有一个列表列出所有的对象的方法,这个就是靠的反射. 一个道理,eclipse上有很多插件,明显先有的eclipse后有的插件,那么 eclipse 怎么创建和调用这些插件呢?还是需要反射. 解决方案二: 简单来说两个作用

Java反射机制应用实践

引言 Java反射机制是一个非常强大的功能,在很多大型项目比如Spring, Mybatis都可以看见反射的身影.通过反射机制我们可以在运行期间获取对象的类型信息,利用这一特性我们可以实现工厂模式和代理模式等设计模式,同时也可以解决Java泛型擦除等令人苦恼的问题.本文我们就从实际应用的角度出发,来应用一下Java的反射机制. 反射基础 p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的Quick Start. 在应用反射机制之前,首先我们先

Java反射机制深入详解

一.概念 反射就是把Java的各种成分映射成相应的Java类. Class类的构造方法是private,由JVM创建. 反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作.例如它允许一个java的类获取他所有的成员变量和方法并且显示出来.Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性.例如,Pascal.C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息. (来自Sun) Java

泛型-对于Java反射的安全性的一些疑问

问题描述 对于Java反射的安全性的一些疑问 最近在看深入理解JVM,随手写了一点代码,有个问题不太理解. 代码如下: public static void main(String[] args) throws Exception { HashMap<Integer, String> map = new HashMap<Integer, String>(); Method put = HashMap.class.getMethod("put", Object.c

Java反射机制的学习

Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法). 也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制.你会嗤之以鼻地告诉我,Java反射机制没啥用.或许在J2EE.J2SE等平台,Java反射机制没啥用(具体我也不了解,不多做评论),但是在Android应用开发中,该