反射之获取类的Class

Android 91es.com站长2024年1月10日 am8:08发布5个月前更新
0
导航号,我的单页导航
目录

前言

记录一下反射相关内容,摘抄于此,方便自己查阅。

反射技术包括如下内容:

  1. 根据一个字符串得到一个类的类型

  2. 获取一个类的所有公用或私有、静态或实例的字段,方法,属性

  3. 对泛类型的反射

正文

本文主要通过字符串得到类的类型

PS: 类型用Class表示

getClass

String mName = "name";
Class mClass = mName.getClass();

通过一个对象,获取它的Class。

Class.forName

根据类命名空间和类组成的字符串,获取它的Class。

try {
    //字符串中的类可能不存在,
    Class mTextView = Class.forName("android.widget.TextView");
} catch (ClassNotFoundException e) {
    throw new RuntimeException(e);
}

获取到它的类型后,可以获取其父类型。

Class mSuperClass = mTextView.getSuperclass();

# TextView的父类型
class android.view.View
# View的父类型
class java.lang.Object

class属性

每个类都有class属性,可以直接.class进行获取其类的Class。

# class java.lang.String
Class mString = String.class;
# class java.lang.String
Class mString2 = java.lang.String.class;
# int
Class mInt = int.class;
# class [I
Class mIntArray = int[].class;
# class [D
Class mDoubleArray = double[].class;

TYPE属性

可以通过TYPE获取对应类型的Class。

# boolean
Class mBoolean = Boolean.TYPE;
# byte
Class mByte = Byte.TYPE;
# char
Class mCharacter = Character.TYPE;
# short 
Class mShort = Short.TYPE;
# int
Class mInteger = Integer.TYPE;
# long
Class mLong = Long.TYPE;
# float
Class mFloat = Float.TYPE;
# double
Class mDouble = Double.TYPE;
# void 
Class mVoid = Void.TYPE;

参考文章

  1. Android插件化开发指南-包建强》

  2. Java的反射简介

版权声明 1、 本站名称 91易搜
2、 本站网址 https://www.91es.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权请留言
4、 本站禁止发布或转载任何违法的相关信息,如有发现请向站长举报
导航号,我的单页导航

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...