`

Java反射,改变final属性

 
阅读更多

问: 怎么改变final属性?

 

public class Test {

	private A a = new A();
	
	
	public void test() throws Exception{
		Field field = a.getClass().getDeclaredField("finalStr");
		field.setAccessible(true);
		field.set(a, "bbb");
		System.out.println(a.getString());
		System.out.println(a.finalStr);
	}
	
	public static void main(String[] args) throws Exception{
		new Test().test();
	}
}

class A{
	public final String finalStr = "aaa";
	
	public String getString(){
		return finalStr;
	}
}

 getDeclaredField方法与getField方法

getField方式只能取得public域的属性

 

分享到:
评论

相关推荐

    Java反射如何有效的修改final属性值详解

    本文将探讨如何通过Java反射有效地修改`final`属性值,并理解其中的限制。 首先,我们来看一个简单的例子,定义一个`Person`类,包含一个`final`属性`name`: ```java class Person { public final String name =...

    java反射的基本用法介绍

    Java反射是Java编程语言的一个强大特性,它允许在运行时检查和操作类、接口、字段和方法的信息。通过反射,我们可以动态地创建对象、调用方法、访问私有成员等,这在处理不确定类型的对象或者需要进行元编程的场景中...

    java工程师面试总结.docx

    如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。 二、final关键字 final关键字是Java语言中的一种修饰符,用于修饰变量、方法和类。final修饰变量时,表示该变量一旦获得了初始值...

    JAVA的反射机制与动态代理.pdf

    #### 一、JAVA反射机制概述 JAVA的反射机制是一种强大的功能,允许程序在运行时获取自身的结构信息并能够直接操作这些内部结构。这种能力通常被称为运行时类型信息(RunTime Type Information, RTTI)。通过反射...

    java深度复制源代码

    - **反射机制**:该工具类大量使用了Java反射API(如`Introspector.getBeanInfo()`、`PropertyDescriptor`等)来获取和设置JavaBean的属性。 - **泛型**:使用了泛型`<T>`,使得该工具类可以应用于任意类型的...

    Java-JDK、数据库系统开发、Web开发学习笔记

    3. Java反射机制:反射机制允许程序在运行时透过Reflection API取得任何一个已知名称的class类的内部信息,包括其修饰符、父类类型、实现接口interface、属性字段、方法,并可以在运行时改变属性内容和调用方法。...

    Java 面试题汇总及解答

    2. **final 关键字**:在Java中,final用于声明不可改变的变量、方法或类。final变量一旦初始化后就不能再改变,final方法不能被子类重写,final类不能被继承。 3. **锁机制**:Java提供了多种锁来实现线程同步,...

    java 程序设计笔记

    - 参数传递:参数都是按值传递的,但对于引用型变量,传递的值是引用值,所以方法中对数据的操作可以改变对象的属性。 - 动态绑定:Java 中所有的非 final 的方法都会自动地进行动态绑定。 - 上溯造型:把派生...

    java基础java基础学习java基础学习

    Java中用关键字`final`声明常量。 5. **运算符**:Java支持算术、关系、逻辑、位和三元等运算符,理解它们的优先级和用法对于编程至关重要。 6. **控制结构**:包括条件语句(if-else, switch-case)和循环(for, ...

    Java基础知识面试题(2020最新版).pdf

    Java的反射机制允许在运行时动态访问类的属性和方法。这种机制的优缺点包括高度的灵活性和性能问题。Java中常用的包如java.lang、java.util和java.io提供了语言核心和基础类库的支持。 Java中的网络编程API支持基于...

    java学习总结.doc

    除了这些基础内容,Java学习还包括类的继承、接口、多态、异常处理、输入输出流、集合框架、线程、网络编程、反射等高级主题。深入理解这些概念,并通过实践项目来巩固,将有助于成为一名合格的Java开发者。在学习...

    java全集.pdf JAVA全集

    - **final变量不能被改变**:一旦赋值后就不能再更改。 - **final方法不能被改写**:子类不能重写final方法。 - **final类不能被继承**:final类不能作为其他类的父类。 - **String类**:String类是final的,不能被...

    Java程序设计电子教案.rar

    4. **final关键字**:final在Java中用于声明不可改变的变量、方法和类。当一个变量被声明为final时,其值一旦赋值后就不能改变。final方法不能被子类重写,而final类则不能被继承,确保了代码的不可变性和安全性。 ...

    java语言基础.zip

    反射机制允许在运行时动态获取类的信息(如类名、属性、方法)并进行操作,增强了程序的灵活性。 19. **泛型**: 泛型提供了一种在编译时检查类型安全的方法,避免了类型转换,并提高了代码的可读性。 20. **...

    Java基础核心知识点总结(79页).pdf

    static用于声明类级别的成员,final用于声明不可改变的变量或不可重写的方法。异常处理是Java程序的重要部分,Exception类是所有异常的基类,常见的异常如IOException和NullPointerException。使用try-catch-finally...

    java工程师找工作中面试遇到的专业知识问题总结.docx

    如果既不指定 name 也不指定 type 属性,这时将通过反射机制使用 byName 自动注入策略。 2. @Resource 装配顺序 @Resource 装配顺序可以分为四步: 1. 如果同时指定了 name 和 type,则从 Spring 上下文中找到...

    Java常用英语单词

    13. **final**:final可以修饰类、方法和变量,表示不可改变或不可继承。 14. **异常(Exception)**:程序运行时发生的错误,可以使用`try-catch`语句处理。 15. **泛型(Generics)**:泛型允许在类、接口和方法...

    2014年Java最全面试题以及答案.

    反射机制是指在运行时动态获取类的信息和调用类的方法或访问类的属性的能力。 19. 类的反射机制中的包及核心类? 在Java中,核心类是java.lang.Class,它代表正在运行的Java应用程序中的类和接口。 20. 得到Class的...

    《Java编程基础》代码

    17. **反射机制**:Java反射API允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作,增强了程序的灵活性。 18. **注解(Annotation)**:注解是Java提供的一种元数据,可以向编译器、JVM或其他...

Global site tag (gtag.js) - Google Analytics