`
Andyan_java
  • 浏览: 14684 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

回调和解析字段修饰符

阅读更多
一个字段的修饰符可能也现以下:
访问修饰符:public,protected,private;
管理运行时的修饰符:transient,volatile;
限制一个实例:static
禁止修改:final
注解:Annotations

如下:

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import static java.lang.System.out;

enum Spy { BLACK , WHITE }

public class FieldModifierSpy {
    volatile int share;
    public int instance;
    class Inner {}

    public static void main(String... args) {
		try {
			    Class<?> c = Class.forName(args[0]);
			    int searchMods = 0x0;  //0
			    for (int i = 1; i < args.length; i++) {
							searchMods |= modifierFromString(args[i]);
	   			}

	    Field[] flds = c.getDeclaredFields();
	    out.format("Fields in Class '%s' containing modifiers:  %s%n",
		       c.getName(),
		       Modifier.toString(searchMods));
	    boolean found = false;
	    for (Field f : flds) {
					int foundMods = f.getModifiers();
					// Require all of the requested modifiers to be present
					if ((foundMods & searchMods) == searchMods) {
				   			 out.format("%-8s [ synthetic=%-5b enum_constant=%-5b ]%n",
					       f.getName(), f.isSynthetic(),
					       f.isEnumConstant());
				   		   found = true;
					}
	    }

	    if (!found) {
					out.format("No matching fields%n");
	    }

        // production code should handle this exception more gracefully
			} catch (ClassNotFoundException x) {
		    	x.printStackTrace();
			}
    }

    private static int modifierFromString(String s) {
				int m = 0x0;
				if ("public".equals(s))           m |= Modifier.PUBLIC;
				else if ("protected".equals(s))   m |= Modifier.PROTECTED;
				else if ("private".equals(s))     m |= Modifier.PRIVATE;
				else if ("static".equals(s))      m |= Modifier.STATIC;
				else if ("final".equals(s))       m |= Modifier.FINAL;
				else if ("transient".equals(s))   m |= Modifier.TRANSIENT;
				else if ("volatile".equals(s))    m |= Modifier.VOLATILE;
				return m;
    }
}

分享到:
评论

相关推荐

    C期末试题(卷)选择题与答案解析.doc

    6. 引用类型:除了类类型、数组类型和接口类型,C#中的引用类型还包括委托类型(delegate),用于事件处理和回调函数。 7. 派生类定义:在C#中,使用冒号`:`来指定基类,例如`class DerivedClass : BaseClass`。 8...

    《C#编程典型实例解析》-源代码-4238

    实例化对象,了解构造函数和析构函数,以及访问修饰符(public、private、protected等)的应用,这些都是关键。 3. **继承、多态与接口**:C#支持单一继承,通过继承可以扩展已有类的功能。多态性允许子类对象替换...

    java反射机制

    Java反射机制是在运行时通过Reflection APIs获取任何已知类的内部信息,包括类的修饰符(如public、static等)、超类、实现的接口、字段和方法的全部信息。它还允许在运行时改变字段内容、调用方法,甚至创建未知类...

    asm-util-2.2.1-sources.jar.zip

    4. 事件驱动的类解析:ASM通过事件回调机制解析类文件,开发者可以注册监听器来处理特定的类结构事件,如访问修饰符、类名、方法签名等。 ASM Util库主要包含以下组件和功能: 1. 类工具:提供了便捷的类信息操作,...

    Chapter03Code.zip

    9. **内联函数与委托**:内联函数可以提高代码的运行效率,而委托则允许我们将方法作为参数传递,实现函数回调,这是事件处理的基础。 10. **数组与集合**:C#中的数组是固定大小的内存块,而集合如List则提供了...

    C#5.0语法参考

    委托和事件机制使得C#适合于事件驱动编程,而匿名方法和lambda表达式则简化了短小的回调函数的编写。 总之,C#5.0是一个强大而现代的编程语言,它的语法丰富,既注重代码的清晰度,又强调运行时的性能。通过深入...

    asm-commons-3.3.zip_asm-commons-3.3.jar

    6. **FieldVisitor和FieldAdapter**: 这些类用于访问和修改类的字段,包括字段的访问修饰符、类型和初始值。 7. **Opcode**: ASM Commons 定义了一系列枚举常量,代表Java字节码指令,这使得开发者可以方便地引用和...

    130道ASP.NET面试题

    以上是针对ASP.NET面试题的部分解析,涵盖了类访问修饰符、页面间通信、递归、委托和事件、方法重写、数据传递、控件操作、排序算法、索引器以及基本数学运算等知识点。这些内容对于理解和应用ASP.NET框架至关重要。

    C#程序设计语言期末考试题A卷共享.pdf

    3. **默认访问修饰符**:类的字段和方法的默认访问修饰符是`private`。 4. **常量声明**:正确的常量声明应为`const float PI = 3.14f;`。 5. **三目运算符**:`a=3+3&gt;5?0:1`中,`3+3`等于6,不小于5,因此取`1`的...

    。net方向企业笔试题

    第四,C#中的委托是函数指针的抽象,它可以将方法作为参数传递给其他方法,实现回调机制。事件实际上就是一种特殊的委托,它封装了事件触发者和事件处理者的交互过程。 关于`override`和重载的区别,`override`用于...

    快学 scala 中文版 带完整目录

    15.5.1 Java修饰符 247 15.5.2 标记接口 248 15.5.3 受检异常 249 15.5.4 变长参数 249 15.5.5 JavaBeans 250 15.6 用于优化的注解 250 15.6.1 尾递归 .250 15.6.2 跳转表生成与内联 252 15.6.3 可省略方法 ...

    C#+语法全解.rar

    - 委托和事件:委托作为类型安全的回调函数,事件用于对象间通信。 4. **LINQ(Language Integrated Query)** - 查询表达式:通过查询语法进行数据库、XML和集合的查询。 - Lambda表达式:简化匿名方法的语法,...

    .net面试题全攻略

    - **封装**:通过访问修饰符(public、private、protected等)实现数据的隐藏。 - **继承**:子类继承父类的特性,实现代码复用。 - **多态**:通过虚方法、接口和抽象类实现多态性,包括方法的重写和重载。 - *...

    C#高级特性解析(整合)

    访问修饰符控制类成员的可见性和访问权限,如public、private、protected等。 **示例:** ```csharp public class MyClass { public void PublicMethod() { /* ... */ } private void PrivateMethod() { /* ... *...

    C#语言 语法教程全解

    - 方法重载和方法重写:通过参数列表或访问修饰符不同实现方法重载,通过virtual和override关键字实现方法重写。 - 继承:一个类可以继承自另一个类,从而获得父类的所有成员。 - 多态:接口和抽象类支持多态性,...

    130道asp.net程序员面试题和答案

    1. 访问修饰符的理解: - `private`:私有成员,仅限于在定义它的类内部访问。 - `protected`:保护成员,可以在定义它的类内部以及其子类中访问。 - `public`:公共成员,无任何访问限制,任何地方都能访问。 -...

    Java的技术点和知识点归纳.pdf

    - **public、protected、default、private**:理解这四种访问权限修饰符对类、方法和字段的影响。 6. **流程控制** - **控制语句**:掌握if、switch、循环(for、while)等基础语法,了解何时使用合适的控制结构...

    C#程序设计语言期末考试题A有答案.docx

    - 类的字段和方法默认的访问修饰符是`private`,意味着它们只在类的内部可见。 - 常量的声明应使用`const`关键字,且在声明时赋值,正确答案是B。 - 表达式`a=3+3&gt;5?0:1`中,如果`3+3`大于5,则取反,即`0`,因此...

Global site tag (gtag.js) - Google Analytics