Modifier的用法及其作用

今天在查看公司原生框架的时候,发现一个Modifier类的用法,简单看了一下发现这是个工具类,位于java.lang.reflect下。

1、功能

该类是修饰符工具类,用于判断和获取某个类、变量、方法的修饰符。

2、简单使用方法

范例:获取某个类的修饰符

package com.classloader.entity;

public class User {

	private int id;

	private String username;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

}
package com.classloader.reflect;

import java.lang.reflect.Modifier;

import com.classloader.entity.User;

public class ReflectTest {

	public static void main(String[] args) {

		Class clazz =  User.class;
		// 获取User类的修饰符
		int modifier = clazz.getModifiers();

		// 判断是否是abstract修饰符
		System.out.println(Modifier.isAbstract(modifier));
		// 判断是否是接口
		System.out.println(Modifier.isInterface(modifier));
		// 获取其修饰符
		System.out.println(clazz.getModifiers());
	}

}

3、访问修饰符列表(源码)

 /**
     * The <code>int</code> value representing the <code>public</code> 
     * modifier.
     */    
    public static final int PUBLIC           = 0x00000001;

    /**
     * The <code>int</code> value representing the <code>private</code> 
     * modifier.
     */    
    public static final int PRIVATE          = 0x00000002;

    /**
     * The <code>int</code> value representing the <code>protected</code> 
     * modifier.
     */    
    public static final int PROTECTED        = 0x00000004;

    /**
     * The <code>int</code> value representing the <code>static</code> 
     * modifier.
     */    
    public static final int STATIC           = 0x00000008;

    /**
     * The <code>int</code> value representing the <code>final</code> 
     * modifier.
     */    
    public static final int FINAL            = 0x00000010;

    /**
     * The <code>int</code> value representing the <code>synchronized</code> 
     * modifier.
     */    
    public static final int SYNCHRONIZED     = 0x00000020;

    /**
     * The <code>int</code> value representing the <code>volatile</code> 
     * modifier.
     */    
    public static final int VOLATILE         = 0x00000040;

    /**
     * The <code>int</code> value representing the <code>transient</code> 
     * modifier.
     */    
    public static final int TRANSIENT        = 0x00000080;

    /**
     * The <code>int</code> value representing the <code>native</code> 
     * modifier.
     */    
    public static final int NATIVE           = 0x00000100;

    /**
     * The <code>int</code> value representing the <code>interface</code> 
     * modifier.
     */    
    public static final int INTERFACE        = 0x00000200;

    /**
     * The <code>int</code> value representing the <code>abstract</code> 
     * modifier.
     */    
    public static final int ABSTRACT         = 0x00000400;

    /**
     * The <code>int</code> value representing the <code>strictfp</code> 
     * modifier.
     */    
    public static final int STRICT           = 0x00000800;

    // Bits not (yet) exposed in the public API either because they
    // have different meanings for fields and methods and there is no
    // way to distinguish between the two in this class, or because
    // they are not Java programming language keywords
    static final int BRIDGE    = 0x00000040;
    static final int VARARGS   = 0x00000080;
    static final int SYNTHETIC = 0x00001000;
    static final int ANNOTATION= 0x00002000;
    static final int ENUM      = 0x00004000;

都是16进制的int类型。

4、方法列表

5、一般使用场合

既然是位于java.lang.reflect下,一般会在动态加载过程中、使用java反射对某些类进行过滤时,会用到,就现在公司的框架,是在扫描类时,用于对部分类过滤使用到的。一般开发并不是很常用,但是对于写框架,个人还是觉得可以用到的。

时间: 2024-10-28 05:27:09

Modifier的用法及其作用的相关文章

malloc、ralloc、calloc的用法,作用,区别,及实现原理

先来看一下三个函数的声明: void * malloc(usigned size); void * realloc(void *ptr, unsigned newsize); void * calloc(size_t numElements, size_t sizeofElement); 它们都包含在#include <stdlib.h>头文件中,他们的返回值都是请求分配的地址,如果请求失败就返回NULL 解释一下这三个函数的用法.作用.区别. malloc() malloc()在内存的动态存

mysql游标的用法及作用

1当前有三张表A.B.C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中:常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有2000多条数据,难道要执行2000多次?显然是不现实的:最终找到写一个存储过程然后通过循环来更新C表,然而存储过程中的写法用的就是游标的形式. [简介] 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制. 游标充当指针的作用. 尽管游标能遍历结果中的所有行,但他一次只指向一行. 游标的作用

thsi指针的一些用法及作用

1 #include<bits/stdc++.h> 2 using namespace std; 3 class person 4 { 5 public: 6 person(int age) 7 { 8 // age = age;是错的两个age混了 9 this->age = age; 10 //this指向被调用成员函数所属对象, 11 //也就是谁调用就指向谁 12 //thsi作用1 13 //用于解决成员名和参数名冲突 14 } 15 int age; 16 person&am

static的用法及作用

static可以用来修饰属性.方法和代码块.static修饰的变量属于这个类所有,既由这个类创建的所有对象共用一个static变量.通常把static修饰的属性和方法称为类属性(类变量).类方法.不使用static修饰的属性和方法属于单个对象,通常称为实例属性(实例变量).实例方法.使用static修饰方法的最常见的例子是我们熟悉的main()方法.下面通过一个示例学习是static的用法及使用static修饰属性和代码块,是如何分配内存空间的.代码示例如下: 运行结果如图所示: 从结果中可以得

moveTaskToback退后台的用法及作用

1 方法:public boolean moveTaskToBack(boolean nonRoot) activity里有这个方法,参数说明如下: nonRoot=false→ 仅当activity为task根(即首个activity例如启动activity之类的)时才生效 nonRoot=true→ 忽略上面的限制 这个方法不会改变task中的activity中的顺序,效果基本等同于home键 应用场景: 比如有些activity诸如引导图之类的,用户在按返回键的时候你并不希望退出(默认就f

(转)mssql sp_addextendedproperty 用法,作用

sp_addextendedproperty [ @name = ] { 'property_name' } [ , [ @value = ] { 'value' } [ , [ @level0type = ] { 'level0_object_type' } , [ @level0name = ] { 'level0_object_name' } [ , [ @level1type = ] { 'level1_object_type' } , [ @level1name = ] { 'leve

git tag 用法 功能作用

前言 最近使用git管理一个项目, 当需要将稳定的代码发布成一个版本,git的标签操作刚好满足需求 用途 标签可以针对某一时间点的版本做标记,常用于版本发布,这恰恰是我所需要的功能,将本地标签推送到Github上即发布了一个Release版本,下载和查看非常方便. 标签分类 git标签分为两种类型:轻量标签和附注标签.轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象,建议使用附注标签,日后还可以查看标签信息. 创建标签 创建轻量标签 $ git tag v0.2.0 -light

vue中$refs的用法及作用详解

一般来讲,获取DOM元素,需要使用document.querySelector('#input1')方法去获取dom节点,然后再获取input1的值. 但是使用了ref绑定之后,我们就不需要再获取dom节点了,可以直接在上面的input上绑定input1,然后$refs里面调用就行. 然后在JavaScript里面通过this.$refs.input1去调用就行了. 这样可以有效减少获取dom节点的性能消耗. HTML <div id="app"> <input ty

PHP中return 和 exit 、break和contiue 区别与用法

先说一下exit函数的用法. 作用: 输出一则消息并且终止当前脚本. 如果一段文本中包括多个以 结束的脚本,则exit退出当前所在脚本. 比如一篇php文本包括一下代码,则输出为world. <% echo "hello"; exit; ?> echo "world"; ?> 语法格式:void表示没有返回值. void exit ([ string $status ] ) void exit ( int $status ) 如果status是一段