您当前的位置:首页 > 互联网教程

请问java中的field是什么意思

发布时间:2025-05-14 09:54:02    发布人:远客网络

请问java中的field是什么意思

一、请问java中的field是什么意思

Java中Field提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类字段或实例字段。Field是成员变量的意思。Field也是一个类,该类位于java.lang.reflect包下。

private int a;//private field私有域

protected double b;//protected field保护域

public String c;//public field公共域

Testd;//default access field默认访问域

public static Object e;//public static field公共静态域

Field.getType():返回这个变量的类型。

Field.getGenericType():如果当前属性有签名属性类型就返回,否则就返回 Field.getType()。

isEnumConstant():判断这个属性是否是枚举类。

Field.getModifiers()以整数形式返回由此 Field对象表示的字段的 Java语言修饰符。

get(Object obj)返回指定对象obj上此 Field表示的字段的值。

set(Object obj, Object value)将指定对象变量上此 Field对象表示的字段设置为指定的新值。

二、java 注解都有哪些东西

Java注解相当于对类或者方法或者变量额外的注释(标识)。以下是转载

-------------------------------------------------------

Annotation是Java5、6只后的新特征(中文称之为注解),并且越来越多的得到了应用,比如Spring、Hibernate3、Struts2、iBatis3、JPA、JUnit等等都得到了广泛应用,通过使用注解,代码的灵活性大大提高。

这些都是使用别人定义的注解,一般注解的使用都是在一些基础框架或者类库中来定义的,因此很少见过有人自己去写一个注解出来并使用在程序中,因此注解的使用常常给人感觉很神秘,这就为你揭开注解的面纱。

注解的神秘之处在于:通过类似注释的方式,可以控制程序的一些行为,运行时的状态,可以为成员赋值,做配置信息等等,与常规编码思维大相径庭。

只用别人定义好的注解是搞不懂这些问题的,要想真正知道注解内部的秘密,要自己定义注解,然后在程序中获取注解信息,拿到注解信息后,就可以为我所用了。

下面我简单演示下三类注解的用法:类注解、方法注解、字段(也称之域)注解的定义与适用,并看看如何获取注解的信息。

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

*@author leizhimin 2009-12-18 14:15:46

@Retention(RetentionPolicy.RUNTIME)

public@interface MyAnnotation4Class{

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

*@author leizhimin 2009-12-18 14:16:05

@Retention(RetentionPolicy.RUNTIME)

public@interface MyAnnotation4Method{

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

*@author leizhimin 2009-12-18 15:23:12

@Retention(RetentionPolicy.RUNTIME)

public@interface MyAnnotation4Field{

@MyAnnotation4Class(msg="测试类注解信息")

@MyAnnotation4Field(commont="成员变量的注解信息", request= true)

@MyAnnotation4Method(msg1="测试方法注解信息1", msg2="测试方法注解信息2")

System.out.println("Hello World!");

为了使用注解,需要通过反射获取注解的对象。通过注解对象来操作注解信息。

import java.lang.reflect.Field;

import java.lang.reflect.Method;

*@author leizhimin 2009-12-18 14:13:02

public class TestOptAnnotation{

public static void main(String[] args) throws NoSuchMethodException, NoSuchFieldException{

TestClass t= new TestClass();

System.out.println("-----------MyAnnotation4Class注解信息---------");

MyAnnotation4Class an4clazz= t.getClass().getAnnotation(MyAnnotation4Class.class);

System.out.println(an4clazz.msg());

System.out.println("-----------MyAnnotation4Method注解信息---------");

Method method= t.getClass().getMethod("testMethod", new Class[0]);

MyAnnotation4Method an4method= method.getAnnotation(MyAnnotation4Method.class);

System.out.println(an4method.msg1());

System.out.println(an4method.msg2());

System.out.println("-----------MyAnnotation4Field注解信息---------");

Field field= t.getClass().getDeclaredField("testfield");

MyAnnotation4Field an4field= field.getAnnotation(MyAnnotation4Field.class);

System.out.println(an4field.commont());

System.out.println(an4field.request());

-----------MyAnnotation4Class注解信息---------

-----------MyAnnotation4Method注解信息---------

-----------MyAnnotation4Field注解信息---------

Process finished with exit code 0

看完上面的测试过程,Annotation已经不再神秘了,这里总结下自定义注解的使用方法:

1、自定义注解,注意注解的时空范围,简单说就是注解针对的目标(类、方法、字段),以及注解的时效(运行时、或者源码中有效)。

2、要获取注解的信息,必须通过Java的反射技术来获取Annotation对象,因为你除此之外没有别的获取注解对象的方法。

3、获取了注解对象,就可以调用注解的方法来获取相对应的值了。为基础框架所用。

4、当然,注解也可以没有定义成员,这样注解就成了一个标记符号了。

三、什么是反射什么Java反射

java反射是什么意思呢?下面带大家了解一下。

JAVA反射是指程序可以访问、检测和修改它本身状态或行为的一种能力。反射是一种强大的工具,能够创建灵活的代码,可以使代码在运行时装配,无需在组件之间进行源代表链接。

JAVA反射机制是在运行状态中,知道所有属性和方法,对于任意一个对象,能够调用它的方法和属性,这种动态获取的信息以及动态调用对象的方法的功能的反射机制。

首先我们先思考一个问题,反射适合使用在哪里呢?从功能上看,反射似乎无所不能,几乎所有的类,所有的属性、方法、构造我们都能使用,但是我们细细思考一下,在实际开发中,并不是所有场景都需要使用反射获取属性或者方法进行操作,反而更多的使用实例.xxx方式操作,而当这些操作重复次数较多的时候,我们往往会考虑优化代码,减少代码冗余,提高复用,比如实体构建赋值等操作,这个时候往往是我们最需要复用的地方,所以我们可以大体认为反射主要使用在实体操作过程中。而在一般操作数据的过程中,我们的实体一般都是知道并且依赖于对应的数据类型的,比如:

2.根据类型定义变量,类型可能是基本类型也可能是引用类型、类或者接口

4.根据类型访问对象的属性,调用方法等操作

以上这些操作都是数据操作的过程中最常见也是最难复用优化的地方,而如果这里的操作使用反射则可以实现动态的操作不同的类型的实例,通过调用反射入口类Class,获取对应的属性、构造、方法完成对应的操作