反射 Reflect Modifier 修饰符工具类
Modifier 修饰符工具类
public class java.lang.reflect.Modifier extends Object
访问修饰符列表
- public static final int PUBLIC = 0x00000001;
- public static final int PRIVATE = 0x00000002;
- public static final int PROTECTED = 0x00000004;
- public static final int STATIC = 0x00000008;
- public static final int FINAL = 0x00000010;
- public static final int SYNCHRONIZED = 0x00000020; 同步
- public static final int VOLATILE = 0x00000040; 用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。
- public static final int TRANSIENT = 0x00000080; 用transient关键字标记的成员变量不参与序列化过程。
- public static final int NATIVE = 0x00000100;
- public static final int INTERFACE = 0x00000200;
- public static final int ABSTRACT = 0x00000400;
- public static final int STRICT = 0x00000800; 即strictfp(strict float point 精确浮点),此关键字可应用于类、接口或方法。
解码方法
public static boolean isPublic(int mod) {
return (mod & PUBLIC) != 0;
}
新增的方法
private static final int CLASS_MODIFIERS =
Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE |
Modifier.ABSTRACT | Modifier.STATIC | Modifier.FINAL |
Modifier.STRICT;
public static int classModifiers() {
return CLASS_MODIFIERS;
}
private static final int INTERFACE_MODIFIERS =
Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE |
Modifier.ABSTRACT | Modifier.STATIC | Modifier.STRICT;
public static int interfaceModifiers() {
return INTERFACE_MODIFIERS;
}
private static final int CONSTRUCTOR_MODIFIERS =
Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE;
public static int constructorModifiers() {
return CONSTRUCTOR_MODIFIERS;
}
private static final int METHOD_MODIFIERS =
Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE |
Modifier.ABSTRACT | Modifier.STATIC | Modifier.FINAL |
Modifier.SYNCHRONIZED | Modifier.NATIVE | Modifier.STRICT;
public static int methodModifiers() {
return METHOD_MODIFIERS;
}
private static final int FIELD_MODIFIERS =
Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE |
Modifier.STATIC | Modifier.FINAL | Modifier.TRANSIENT |
Modifier.VOLATILE;
public static int fieldModifiers() {
return FIELD_MODIFIERS;
}
private static final int PARAMETER_MODIFIERS =
Modifier.FINAL;
public static int parameterModifiers() {
return PARAMETER_MODIFIERS;
}
toString 方法的实现
public static String toString(int mod) {
StringBuilder sb = new StringBuilder();
int len;
if ((mod & PUBLIC) != 0) sb.append("public ");
if ((mod & PROTECTED) != 0) sb.append("protected ");
if ((mod & PRIVATE) != 0) sb.append("private ");
/* Canonical典范、规范 order */
if ((mod & ABSTRACT) != 0) sb.append("abstract ");
if ((mod & STATIC) != 0) sb.append("static ");
if ((mod & FINAL) != 0) sb.append("final ");
if ((mod & TRANSIENT) != 0) sb.append("transient ");
if ((mod & VOLATILE) != 0) sb.append("volatile ");
if ((mod & SYNCHRONIZED) != 0) sb.append("synchronized ");
if ((mod & NATIVE) != 0) sb.append("native ");
if ((mod & STRICT) != 0) sb.append("strictfp ");
if ((mod & INTERFACE) != 0) sb.append("interface ");
/* trim trailing space */
if ((len = sb.length()) > 0) return sb.toString().substring(0, len-1);
return "";
}
示例1:解码mod演示
public class Test {
private static final transient int temp = 1;
public static void main(String[] args) throws Exception {
testModifier(Test.class.getDeclaredField("temp").getModifiers());//154。private static final transient
testModifier(Test.class.getMethod("main", String[].class).getModifiers());//9。public static
}
public static void testModifier(int mod) {
System.out.println("----------------------【mod=" + mod + "】----------------------");
System.out.println("【toString】" + Modifier.toString(mod));
System.out.println("【isPublic】" + Modifier.isPublic(mod));
System.out.println("【isPrivate】" + Modifier.isPrivate(mod));
System.out.println("【isProtected】" + Modifier.isProtected(mod));
System.out.println("【isStatic】" + Modifier.isStatic(mod));
System.out.println("【isFinal】" + Modifier.isFinal(mod));
System.out.println("【isSynchronized】" + Modifier.isSynchronized(mod));
System.out.println("【isVolatile】" + Modifier.isVolatile(mod));
System.out.println("【isTransient】" + Modifier.isTransient(mod));
System.out.println("【isNative】" + Modifier.isNative(mod));
System.out.println("【isInterface】" + Modifier.isInterface(mod));
System.out.println("【isAbstract】" + Modifier.isAbstract(mod));
System.out.println("【isStrict】" + Modifier.isStrict(mod));
}
}
示例2:不同类型元素可使用的修饰符
System.out.println(Modifier.toString(Modifier.classModifiers()));//public protected private abstract static final strictfp
System.out.println(Modifier.toString(Modifier.interfaceModifiers()));//public protected private abstract static strictfp
System.out.println(Modifier.toString(Modifier.constructorModifiers()));//public protected private
System.out.println(Modifier.toString(Modifier.methodModifiers()));//public protected private abstract static final synchronized native strictfp
System.out.println(Modifier.toString(Modifier.fieldModifiers()));//public protected private static final transient volatile
System.out.println(Modifier.toString(Modifier.parameterModifiers()));//final
2017-9-5
反射 Reflect Modifier 修饰符工具类的更多相关文章
- Python_day8_面向对象(多态、成员修饰符、类中特殊方法、对象边缘知识)、异常处理之篇
一.面向对象之多态 1.多态:简而言子就是多种形态或多种类型 python中不支持多态也用不到多态,多态的概念是应用与java/C#中指定传参的数据类型, java多态传参:必须是传参数的数据类型或传 ...
- 10-04 Java 权限修饰符,类及其组成常见的修饰符
四种权限修饰符的测试 /* 权限修饰符: 本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类) private Y 默认 Y Y protected Y Y Y public Y Y ...
- Python学习:17.Python面向对象(四、属性(特性),成员修饰符,类的特殊成员)
一.属性(特性) 普通方法去执行的时候,后面需要加括号,特性方法执行的时候和静态字段一样不需要不需要加括号. 特性方法不和字段同名. 特性方法不能传参数. 在我们定义数据库字段类的时候,往往需要对其中 ...
- 学习C#修饰符:类修饰符和成员修饰符
C#修饰符之类修饰符:public.internal. partial.abstract.sealed.static C#修饰符之成员修饰符:public.protected.private.inte ...
- python基础(27):类成员的修饰符、类的特殊成员
1. 类成员的修饰符 类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的定义不同:私 ...
- 类的高级:访问修饰符、封装、静态类成员static、内部类;
访问修饰符: 公开访问(public):对所有子类,非子类访问: 受保护的(protected):只有同包子类.非子类.不同包子类可访问,不同包非子类不可访问: 私有的(private):只有本类可访 ...
- Java类访问权限修饰符
一.概要 通过了解Java4种修饰符访问权限,能够进一步完善程序类,合理规划权限的范围,这样才能减少漏洞.提高安全性.具备表达力便于使用. 二.权限表 修饰符 同一个类 同一个包 不同包的子类 不同包 ...
- Java中各种(类、方法、属性)访问修饰符与修饰符的说明
类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被本项目的所 ...
- 访问修饰符(access modifier)。
1)public(公共的):被 public所修饰的属性和方法可以被有类访问. 所修饰的属性和方法可以被有类访问. 2)protected (受保护的):被protected所修饰的属性和方法可以在类 ...
随机推荐
- HDU - 2199 Can you solve this equation? 二分 简单题
Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- Picasso:开启大前端的未来
“道生一,一生二,二生三,三生万物.” —— <道德经> Picasso是大众点评移动研发团队自研的高性能跨平台动态化框架,经过两年多的孕育和发展,目前在美团多个事业群已经实现了大规模的应 ...
- SB!SB!SB! ----WriteUp
原题 下载图片 http://ctf5.shiyanbar.com/stega/ste.png 用Stegsolve查看 发现有个二维码 扫码可以知道flag
- String 字符串详解 / 常用API
String 详解 / 常用API 简介 String 是不可改变的字符串序列.String 为字符串常量 StringBuilder 与StringBuffer 均为可改变的字符串序列.为字符串变量 ...
- UVALive 6257 Chemist's vows
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #i ...
- opencv第一课 打开一个图片
#include<stdio.h>#include<stdlib.h>#include<opencv2\opencv.hpp>#include<iostrea ...
- Hihocoder #1081 最短路径一 dijkstra
#1081 : 最短路径·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 万圣节的早上,小Hi和小Ho在经历了一个小时的争论后,终于决定了如何度过这样有意义的一天—— ...
- Xcode 中的IOS工程模板
1.IOS模板主要分为: Application .Framework.Other application 分为:Master-Detail Application 可以构建树形导航模式引用,生成的代 ...
- Bootstrap_表格
Bootstrap 表格 Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> 为表格添加基础样式. < ...
- PowerDesigner导出图片
但是通过上面导出的图片会比较模糊不清晰,但是可以通过这样解决: 1.放大设计,然后全选复制全部 2.打开画图工具 3.粘贴到画图工具
System.out.println(Modifier.toString(Modifier.classModifiers()));//public protected private abstract static final strictfp
System.out.println(Modifier.toString(Modifier.interfaceModifiers()));//public protected private abstract static strictfp
System.out.println(Modifier.toString(Modifier.constructorModifiers()));//public protected private
System.out.println(Modifier.toString(Modifier.methodModifiers()));//public protected private abstract static final synchronized native strictfp
System.out.println(Modifier.toString(Modifier.fieldModifiers()));//public protected private static final transient volatile
System.out.println(Modifier.toString(Modifier.parameterModifiers()));//final
一.面向对象之多态 1.多态:简而言子就是多种形态或多种类型 python中不支持多态也用不到多态,多态的概念是应用与java/C#中指定传参的数据类型, java多态传参:必须是传参数的数据类型或传 ...
四种权限修饰符的测试 /* 权限修饰符: 本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类) private Y 默认 Y Y protected Y Y Y public Y Y ...
一.属性(特性) 普通方法去执行的时候,后面需要加括号,特性方法执行的时候和静态字段一样不需要不需要加括号. 特性方法不和字段同名. 特性方法不能传参数. 在我们定义数据库字段类的时候,往往需要对其中 ...
C#修饰符之类修饰符:public.internal. partial.abstract.sealed.static C#修饰符之成员修饰符:public.protected.private.inte ...
1. 类成员的修饰符 类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的定义不同:私 ...
访问修饰符: 公开访问(public):对所有子类,非子类访问: 受保护的(protected):只有同包子类.非子类.不同包子类可访问,不同包非子类不可访问: 私有的(private):只有本类可访 ...
一.概要 通过了解Java4种修饰符访问权限,能够进一步完善程序类,合理规划权限的范围,这样才能减少漏洞.提高安全性.具备表达力便于使用. 二.权限表 修饰符 同一个类 同一个包 不同包的子类 不同包 ...
类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被本项目的所 ...
1)public(公共的):被 public所修饰的属性和方法可以被有类访问. 所修饰的属性和方法可以被有类访问. 2)protected (受保护的):被protected所修饰的属性和方法可以在类 ...
Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
“道生一,一生二,二生三,三生万物.” —— <道德经> Picasso是大众点评移动研发团队自研的高性能跨平台动态化框架,经过两年多的孕育和发展,目前在美团多个事业群已经实现了大规模的应 ...
原题 下载图片 http://ctf5.shiyanbar.com/stega/ste.png 用Stegsolve查看 发现有个二维码 扫码可以知道flag
String 详解 / 常用API 简介 String 是不可改变的字符串序列.String 为字符串常量 StringBuilder 与StringBuffer 均为可改变的字符串序列.为字符串变量 ...
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #i ...
#include<stdio.h>#include<stdlib.h>#include<opencv2\opencv.hpp>#include<iostrea ...
#1081 : 最短路径·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 万圣节的早上,小Hi和小Ho在经历了一个小时的争论后,终于决定了如何度过这样有意义的一天—— ...
1.IOS模板主要分为: Application .Framework.Other application 分为:Master-Detail Application 可以构建树形导航模式引用,生成的代 ...
Bootstrap 表格 Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> 为表格添加基础样式. < ...
但是通过上面导出的图片会比较模糊不清晰,但是可以通过这样解决: 1.放大设计,然后全选复制全部 2.打开画图工具 3.粘贴到画图工具