当前位置: 首页 > news >正文

上海企业网站制作方法自己做的网站怎么管理用户

上海企业网站制作方法,自己做的网站怎么管理用户,网站优化基础,一键搭建网站在说Filed之前,我们先来了解一下Member接口. 反射中定义了一个接口 java.lang.reflect.Member . java.lang.reflect.Field, java.lang.reflect.Method, 和java.lang.reflect.Constructor 都实现了该接口.我们将在接下来的部分介绍这些类.对于每个Member, 我们都会介绍相关的API…在说Filed之前,我们先来了解一下Member接口. 反射中定义了一个接口 java.lang.reflect.Member . java.lang.reflect.Field, java.lang.reflect.Method, 和java.lang.reflect.Constructor 都实现了该接口.我们将在接下来的部分介绍这些类.对于每个Member, 我们都会介绍相关的API去获取和操作该Member.每个概念我们都会使用示例代码和示例输出说明. 1.获得字段(Field)的类型 一个filed可以是一个基本数据类型或者一个引用类型.java中有八种基本的数据类型: boolean, byte, short, int, long, char, float,  double.引用类型可以使任何的直接或者间接的继承java.lang.Object 的接口,数组,或者枚举等. FiledSpy示例类实现了将一个给定的类的二进制文件中包含的field类型和泛型打印出来. import java.lang.reflect.Field; import java.util.List;public class FieldSpyT {public boolean[][] b {{ false, false }, { true, true } };public String name Alice;public ListInteger list;public T val;public static void main(String... args) {try {Class? c Class.forName(args[0]);Field f c.getField(args[1]);System.out.format(Type: %s%n, f.getType());System.out.format(GenericType: %s%n, f.getGenericType());// production code should handle these exceptions more gracefully} catch (ClassNotFoundException x) {x.printStackTrace();} catch (NoSuchFieldException x) {x.printStackTrace();}} }实例输出: $ java FieldSpy FieldSpy b Type: class [[Z GenericType: class [[Z $ java FieldSpy FieldSpy name Type: class java.lang.String GenericType: class java.lang.String $ java FieldSpy FieldSpy list Type: interface java.util.List GenericType: java.util.Listjava.lang.Integer $ java FieldSpy FieldSpy val Type: class java.lang.Object GenericType: T字段b的类型是一个二维的布尔型数组. 字段val的类型被认定为java.lang.Object.因为泛型的实现方式是在编译的过程中将和泛型有关的信息用相关的类替换.因此此处为java.lang.Object. 2.获取和解析字段修饰符(Filed Modifier) java中有以下几种字段修饰符: 访问控制修饰符: public, protected, and private运行时领域管理修饰符: transient and volatile控制一个实例修饰符: static禁止值修改修饰符: final注解 方法Field.getModifiers()可以用来获得一个以整型表示的字段修饰符.这些整形被定义在java.lang.reflect.Modifier中. 示例类FieldModifierSpy说明了如何搜索一个类中指定的修饰符所修饰的字段. 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;int instance;class Inner {}public static void main(String... args) {try {Class? c Class.forName(args[0]);int searchMods 0x0;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 presentif ((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;} }示例输出: $ java FieldModifierSpy FieldModifierSpy volatile Fields in Class FieldModifierSpy containing modifiers: volatile share [ syntheticfalse enum_constantfalse ]$ java FieldModifierSpy Spy public Fields in Class Spy containing modifiers: public BLACK [ syntheticfalse enum_constanttrue ] WHITE [ syntheticfalse enum_constanttrue ]$ java FieldModifierSpy FieldModifierSpy\$Inner final Fields in Class FieldModifierSpy$Inner containing modifiers: final this$0 [ synthetictrue enum_constantfalse ]$ java FieldModifierSpy Spy private static final Fields in Class Spy containing modifiers: private static final $VALUES [ synthetictrue enum_constantfalse ]注意到一些字段被显示出来,虽然他们并没有被定义在该类的源代码中.原因是编译器会自动生成一些字段(synthetic fields  :这些字段指的是不是有用户显示声明的,而是在编译的时候,由编译器合成的).如果你想要知道一个字段是否是合成的(synthetic), 也已使用Field.isSynthetic()方法.合成字段的集合是依赖于编译器的.然而普遍的使用this$0在内部类中表示最外层的封装类.枚举中使用$VALUES类定义隐式的静态方法values().合成类的名称不一定总是一样的,不同的编译器可能有不同的名字.并且并不是所有的合成字段都会被声明为public. 因为Field实现了java.lang.reflect.AnnotatedElement接口,因此我们也可以使用java.lang.annotation.RetentionPolicy.RUNTIME获取运行时注解.具体示例见Examining Class Modifiers and Types.. 3.获取和设置字段值. 给我们一个Class实例,我们可以使用反射去修改字段的值.这经常被使用在不能通过通常的方式修改该字段的值的环境下.因为这样的操作通常违反类的设计意图,这应该被谨慎的使用. Book示例类说明了如何设置long, array, enum类型的字段值.其他类型的对应方法,参考java API. import java.lang.reflect.Field; import java.util.Arrays; import static java.lang.System.out;enum Tweedle { DEE, DUM }public class Book {public long chapters 0;public String[] characters { Alice, White Rabbit };public Tweedle twin Tweedle.DEE;public static void main(String... args) {Book book new Book();String fmt %6S: %-12s %s%n;try {Class? c book.getClass();Field chap c.getDeclaredField(chapters);out.format(fmt, before, chapters, book.chapters);chap.setLong(book, 12);out.format(fmt, after, chapters, chap.getLong(book));Field chars c.getDeclaredField(characters);out.format(fmt, before, characters,Arrays.asList(book.characters));String[] newChars { Queen, King };chars.set(book, newChars);out.format(fmt, after, characters,Arrays.asList(book.characters));Field t c.getDeclaredField(twin);out.format(fmt, before, twin, book.twin);t.set(book, Tweedle.DUM);out.format(fmt, after, twin, t.get(book));// production code should handle these exceptions more gracefully} catch (NoSuchFieldException x) {x.printStackTrace();} catch (IllegalAccessException x) {x.printStackTrace();}} }示例输出: $ java Book BEFORE: chapters 0AFTER: chapters 12 BEFORE: characters [Alice, White Rabbit]AFTER: characters [Queen, King] BEFORE: twin DEEAFTER: twin DUM注意: 通过反射设置字段的值往往需要很多的操作.因为很多额外的操作必须被执行,例如检测数据的可访问性.但是从运行时的角度来看,结果是一样的.因为所有的操作被看做一个院子操作来执行,等同于直接修改该变量的值.e:使用反射会导致一些运行时优化失效.例如,下面的代码很容易被java虚拟机优化:int x 1; x 2; x 3;但是如果使用反射,则要使用Field.set*(),这是优化失效.
http://www.sadfv.cn/news/62915/

相关文章:

  • 电脑网站与手机的区别是什么发行商城小程序
  • 陕西交通建设集团网站龙岗网站设计效果
  • 济南网站建设_美叶网络邢台市路桥建设总公司网站
  • 网站 流程优化什么网站可以做宣传
  • 福田公司官网刚做优化的网站什么能更新
  • 建设银行网站无法登陆flash网站建设个人简介
  • 网站前台和后台对接实例用模板快速建站
  • 打赏网站怎么建设学完网站建设再可以学什么
  • 网站开发 脚本怎么写网站建设推广注册公司
  • 做网站 图片需要多大的asp.net网站
  • 网站建设对企业的重要性网站建设近五年参考文献
  • 罗湖网站设计公司哪家好连云港网站关键词优化
  • 咸阳学校网站建设费用微信分享网站短链接怎么做的
  • 建设房屋出租网站手机软件开发教程
  • 安徽营销型网站建设wikidot网站怎么做
  • 做网站具体指什么网络营销服务的特点
  • 全国前十名校程序开发公司常州网站seo
  • 浙江网警优化方案官网电子版
  • 羊 东莞网站开发高性能标准网站建设进阶指南 pdf
  • 用户体验设计师证书广州新塘网站seo优化
  • 开发网站如何赚钱wordpress 清理数据库
  • 网站数据丢失记事本做网站
  • 哪个网站可以做字体大小申远空间设计公司官网
  • 建设网站的推广的软文改变网站字体
  • 2022年互联网创业项目网站seo优化推广教程
  • 婚庆网站论文广州市建设企业网站哪家好
  • 在线设计海报网站第三方公司做网站价格
  • 个人定制网站怎样做商城网站的推广
  • 推荐几个自学做衣服的网站wordpress投稿上传图片
  • 网站建设 简易合同做全景效果图的网站