Java笔记之反射机制(Class&Package&Field)

简介: 新的知识点 底层的技术----反射技术 String类时候 隐约提起过 非常特殊的引用数据类型 String s = "abc"; //new String("abc"); 不可变特性 String不可变特性体现在 长度 内容 public final class String{ private final char[] value; } 内容好像不是真的不让变 可以通过反射技术修改 *一会儿学完了反射操作属性 尝试修改一下String中的value值反射 reflect 面向对象的变成思想 类 从很多对象中抽取出来的公有的特征行为 抽象描述

新的知识点

底层的技术----反射技术

String类时候  隐约提起过

非常特殊的引用数据类型

String s = "abc"; //new String("abc");

不可变特性

String不可变特性体现在  长度  内容

 public final class String{

  private final char[] value;

 }

内容好像不是真的不让变  可以通过反射技术修改

*一会儿学完了反射操作属性  尝试修改一下String中的value值

反射 reflect

面向对象的变成思想

类 从很多对象中抽取出来的公有的特征行为  抽象描述   用来描述一组对象

对象 现实生活中 先存在了好多对象 很多相同特征 相同行为

类是用来描述一组对象

反射机制认为是用来描述一组类

可以与之前学习File对比着学习

Class  用来描述类本身

Package  用来描述类所属的包

Field  用来描述类中的属性

Method  用来描述类中的方法

Constructor 用来描述类中的构造方法

Annotation 用来描述类中的注解

1.如何获取Class

 如下三种方式

 Class clazz = Class.forName("包名.类名");

 Class clazz = 类名.class;

 Class clazz = 对象.getClass();//Object类中的方法

2.Class中的常用方法

 1.int result = getModifiers(); 获取类的修饰符(权限 特征)

  每一个修饰符 用一个整数来进行表示

              0开始---0 1 2 4 8 16 32 64 128 256 512

              0--默认不写  1--public  2--private  4--protected

              8--static   16--final  32--synchronized  64volatile

              128--transient  256--native  512--interface  1024--abstract

 2.String name = getName();获取名字

 3.String simpleName = getSimpleName();简单名

 4.Package p = getPackage();

  p.getName();

 5.Class sclazz = getSuperClass();//获取超类(父类)

 6.Class[] classes = getInterface();

 7.Object obj = newInstance();//默认调用无参数构造方法创建对象

 8.Field f = getField("属性名");

    Field[] fs = getFields();

    如上的两个方法只能获取公有的属性  但是包含继承过来的父类属性

 9.getDeclaredField("属性");

    Field[] fs = getDeclaredFields();

    如上的两个方法能获取公有的和私有的属性  但是只能获取本类中的属性

3.Field类中的常用方法

 int = getModifers()

 Class = getType()

 String = getName()

 操作属性  向里面存值

 set(对象,值)  

 操作属性  从里面取值

 值 = get(对象)

 setAccessable(true); 可以修改属性被操作

 对象 = new();//创建对象空间  当前对象空间里有自己的一套元素(属性 方法)

 对象.属性 = 值;

 属性 = 类.getField();

 属性.赋值(哪个对象,值);

 值 = 对象.属性 值 = 属性.取值(哪个对象)

目录
相关文章
|
8天前
|
安全 Java 数据库连接
Java中的异常处理机制及其最佳实践
【8月更文挑战第12天】在Java的世界里,异常处理是维护程序健壮性的关键环节之一。它不仅涉及到错误检测,还关乎如何优雅地恢复或报告错误。本文将深入探讨Java的异常处理机制,包括异常类型、捕获异常的策略以及异常的最佳处理实践。我们将一起学习如何通过有效的异常管理来提升代码质量和用户体验。
|
7天前
|
Java 数据库连接 开发者
Java中的异常处理机制深度解析
【8月更文挑战第13天】本文旨在深入探讨Java编程语言中一个至关重要的组成部分——异常处理机制。我们将从基本概念入手,逐步展开讨论异常处理在Java语言设计中的角色和重要性,以及如何正确利用这一机制来提高代码的健壮性和可维护性。文章将通过分析异常处理的最佳实践,揭示如何在复杂的应用程序中有效地管理和处理错误情况。
|
7天前
|
前端开发 Java 编译器
【前端学java】java中的package与import(3)
【8月更文挑战第9天】java中的package与import
10 2
【前端学java】java中的package与import(3)
|
1天前
|
Java 测试技术 Docker
记录一次很坑的报错:java.lang.Exception: The class is not public.
这篇文章记录了作者在Docker中运行服务进行单元测试时遇到的一系列问题,包括Spring Boot与Spring Cloud版本不一致、Bean注入问题、测试单元引入问题以及公共类和方法的可见性问题,并提供了解决问题的方法和成功测试通过的代码示例。
记录一次很坑的报错:java.lang.Exception: The class is not public.
|
3天前
|
存储 SQL 关系型数据库
深入MySQL锁机制:原理、死锁解决及Java防范技巧
深入MySQL锁机制:原理、死锁解决及Java防范技巧
|
4天前
|
Java 数据库
成功解决:java.sql.SQLSyntaxErrorException: Unknown column ‘origin_name‘ in ‘field list‘
这篇文章分享了作者在使用SpringBoot和Mybatis-plus时遇到的SQLSyntaxErrorException错误,原因是字段映射不正确,并通过修改数据库字段名称或关闭自动驼峰命名转换配置来成功解决了这个问题。
成功解决:java.sql.SQLSyntaxErrorException: Unknown column ‘origin_name‘ in ‘field list‘
|
6天前
|
Java 程序员 编译器
深入浅出Java异常处理机制
在Java编程的世界中,异常处理就像是我们生活中的急救包,它帮助我们处理程序运行时出现的意外情况。本文将带你了解Java异常处理的基础知识,探索异常类型,学习如何捕获和处理它们,并讨论最佳实践。让我们一起走进Java异常处理的世界,学会如何使用这个强大的工具来保护我们的程序。
|
7天前
|
安全 Java 程序员
Java中的异常处理机制:从基础到高级
【8月更文挑战第13天】在Java编程中,异常处理是一个不可或缺的部分。本文将深入探讨Java的异常处理机制,从基本概念出发,逐步解析try-catch-finally语句块的使用,探讨自定义异常类的设计,以及介绍高级异常处理技术如try-with-resources和异常链。通过这些内容的学习,读者将能够更加有效地管理和控制程序运行时的错误。
|
6天前
|
存储 安全 Java
java集合框架学习笔记
这篇文章是关于Java集合框架的详细学习笔记,包括集合的概念、使用方式以及List、Set和Map等集合类型的具体实现和特点。
java集合框架学习笔记
|
9天前
|
消息中间件 负载均衡 Java
"深入Kafka核心:探索高效灵活的Consumer机制,以Java示例展示数据流的优雅消费之道"
【8月更文挑战第10天】在大数据领域,Apache Kafka凭借其出色的性能成为消息传递与流处理的首选工具。Kafka Consumer作为关键组件,负责优雅地从集群中提取并处理数据。它支持消息的负载均衡与容错,通过Consumer Group实现消息的水平扩展。下面通过一个Java示例展示如何启动Consumer并消费数据,同时体现了Kafka Consumer设计的灵活性与高效性,使其成为复杂消费场景的理想选择。
37 4