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

河南省汝州市建设门户网站可以做描文本的网站

河南省汝州市建设门户网站,可以做描文本的网站,不断推进门户网站建设,黑龙江住房和城乡建设部网站目录 反射反射相关类获取类中属性相关方法常用获得类相关的方法示例常用获得类中属性相关的方法示例获得类中注解相关的方法 反射优缺点 枚举常用方法优缺点 枚举与反射lambda表达式语法函数式接口简化规则使用示例变量捕获集合中的应用优缺点 反射 Java的反射(refl…

目录

  • 反射
    • 反射相关类
    • 获取类中属性相关方法
      • 常用获得类相关的方法
      • 示例
      • 常用获得类中属性相关的方法
      • 示例
      • 获得类中注解相关的方法
    • 反射优缺点
  • 枚举
    • 常用方法
    • 优缺点
  • 枚举与反射
  • lambda表达式
    • 语法
    • 函数式接口
    • 简化规则
    • 使用示例
    • 变量捕获
    • 集合中的应用
    • 优缺点

反射

  • Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
  • 对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;
  • 这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。

反射相关类

类名用途
Class类代表类的实体,在运行的Java应用程序中表示类和接口
Field类代表类的成员变量/类的属性
Method类代表类的方法
Constructor类代表类的构造方法

获取类中属性相关方法

常用获得类相关的方法

方法用途
getClassLoader()获得类的加载器
getDeclaredClasses()返回一个数组,数组中包含该类中所有类和接口类的对象(包括私有的)
forName(String className)根据类名返回类的对象
newInstance()创建类的实例
getName获得类的完整路径名字

示例

获取类有以下三种方法:

  • 通过getClass获取Class对象
类名 对象名 = new 类名();//初始化一个对象
Class 类变量名 = 对象名.getClass();
  • 直接通过 类名.class 的方式得到。该方法最为安全可靠,程序性能更高
    ( 这说明任何一个类都有一个隐含的静态成员变量 class)
 Class 类变量名 = 类名.class;
  • 通过 Class 对象的 forName() 静态方法来获取,用的最多,
    但可能抛出 ClassNotFoundException 异常
try {Class 类变量名 = Class.forName("包名.类名");
} catch (ClassNotFoundException e) {e.printStackTrace();
}

常用获得类中属性相关的方法

方法用途
getField(String name)获得某个公有的属性对象
getFields()获得所有公有的属性对象
getDeclaredField(String name)获得某个属性对象
getDeclaredFields()获得所有属性对象

示例

获取私有构造方法:(展示核心代码,要捕获异常)

//第一步:调用获取方法,参数与构造方法的类型的.class
Constructor<T> constructor = c1.getDeclaredConstructor(String.class , int.class);
//第二步:由于是私有的就要设置为可访问,相当于获取权限
constructor.setAccessible(true);
//第三步:使用构造方法获取一个对象
Object o = constructor.newInstance("kun",2.5);

获得类中注解相关的方法

方法用途
getAnnotation(Class annotationClass)返回该类中与参数类型匹配的公有注解对象
getAnnotations()返回该类所有的公有注解对象
getDeclaredAnnotation(Class annotationClass)返回该类中与参数类型匹配的所有注解对象
getDeclaredAnnotations()返回该类所有的注解对象

反射优缺点

优点:

  • 对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法
  • 增加程序的灵活性和扩展性,降低耦合性,提高自适应能力
  • 反射已经运用在了很多流行框架如:Struts、Hibernate、Spring 等等。

缺点:

  • 使用反射会有效率问题。会导致程序效率降低。
  • 反射技术绕过了源代码的技术,因而会带来维护问题。反射代码比相应的直接代码更复杂 。

枚举

枚举是在JDK1.5以后引入的。
主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方
式:public static final
枚举语法(类内方法外):

public enum 枚举名{RED,BLACK,GREEN;//定义的都相当于常量
}

常用方法

方法用途
values()以数组形式返回枚举类型的所有成员
ordinal()获取枚举成员的索引位置
valueOf()将普通字符串转换为枚举实例
compareTo()比较两个枚举成员在定义时的顺序

枚举的构造方法默认是私有的,且只能是私有的。

优缺点

优点:

  1. 枚举常量更简单安全 。
  2. 枚举具有内置方法 ,代码更优雅 。

缺点: 不可继承,无法扩展 。

枚举与反射

当我们按照前面获取构造方法的方法获取枚举的构造方法时汇报异常:java java.lang.NoSuchMethodException
看源码会知道是因为除了我们自己的构造函数参数外,他默认后边还会给参数,也就是说,这里我们参数给少了。
正确给参数后还是会报java.lang.IllegalArgumentException
原因是newInstance方法源码中有如下判断:

lambda表达式

Lambda表达式是Java SE 8中一个重要的新特性。
lambda表达式允许你通过表达式来代替功能接口。
lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。
Lambda 表达式(Lambda expression),基于数学中的λ演算得名,也可称为闭包(Closure)。

语法

(parameters) -> expression 或 (parameters) ->{ statements; } 
  1. paramaters:类似方法中的形参列表,这里的参数是函数式接口里的参数。这里的参数类型可以明确的声明也可不声明而由JVM隐含的推断。另外当只有一个推断类型时可以省略掉圆括号。
  2. ->:可理解为“被用于”的意思。
  3. 方法体:可以是表达式也可以代码块,是函数式接口里方法的实现。代码块可返回一个值或者什么都不返回,这里的代码块块等同于方法的方法体。如果是表达式,也可以返回一个值或者什么都不返回。

函数式接口

一个接口有且只有一个抽象方法,其他无关。
函数式接口可以加上@FunctionalInterface注解,加上后idea会自动帮你检验。

简化规则

  1. 参数类型可以省略,如果需要省略,每个参数的类型都要省略。
  2. 参数的小括号里面只有一个参数,那么小括号可以省略
  3. 如果方法体当中只有一句代码,那么大括号可以省略
  4. 如果方法体中只有一条语句,且是return语句,那么大括号可以省略,且去掉return关键字。

使用示例

MoreParameterNoReturn moreParameterNoReturn = ( a, b)->{System.out.println("无返回值多个参数,省略参数类型:"+a+" "+b);
};OneParameterNoReturn oneParameterNoReturn = a ->{System.out.println("无参数一个返回值,小括号可以胜率:"+ a);
};NoParameterNoReturn noParameterNoReturn = ()->System.out.println("无参数无返回值,方法体中只有一行代码");

变量捕获

lambda可以自动捕获上层的变量。
但是捕获到的变量不能够在修改,修改就会报错。

public static void main(String[] args) {int a = 10;NoParameterNoReturn noParameterNoReturn = ()->{// a = 99; errorSystem.out.println("捕获变量:"+a);};noParameterNoReturn.test();
}

集合中的应用

优缺点

优点:

  1. 代码简洁,开发迅速
  2. 方便函数式编程
  3. 非常容易进行并行计算
  4. Java 引入 Lambda,改善了集合操作

缺点:

  1. 代码可读性变差
  2. 在非并行计算中,很多计算未必有传统的 for 性能要高
  3. 不容易进行调试
http://www.yayakq.cn/news/939087/

相关文章:

  • 服务商名称是什么意思小江seo
  • 做ppt的网站wordpress文章显示标题在首页
  • 做艺人资料卡的网站企业画册设计图片
  • 国内对企业网站开发的研究辽宁省住房与城乡建设厅网站
  • 泰安肥城做网站的公司黑镜主题2.0wordpress
  • 重生主角做视频网站的小说淘宝网站开发系统
  • 中山网站建设文化咨询搜狐一开始把网站当做什么来做
  • 快钱支付需要网站备案吗炫酷网站界面设计
  • 网站如何制作注册合肥网站建设电话咨询
  • 安徽四建东方建设有限公司网站做外贸的网站看啥书
  • 泰塔科技网站建设word模板
  • 个人做网站用哪个主机好百度打广告多少钱
  • 北京app开发网站建设如何利用国外的网站开发客户
  • 国内做家具外贸的网站有哪些wordpress安装模板文件
  • 金方时代做网站怎么样wordpress 写作主题
  • 龙华区住房和建设局网站辽宁省建设工程信息网官网新网站
  • 刷赞网站推广免费软件中国建设企业银行官网站
  • 中国设计网站排行榜前十名wordpress 主题 单栏
  • 中英文网站开发费用百度域名查询官网
  • 网站代备案高端网站设计图片
  • 做ppt配图好用的网站名片在哪个网站可以做
  • 怎么建一个小说网站seo技术服务
  • 临沂经开区建设局网站做网站都要掌握什么
  • 营销网站主题有哪些内容wordpress 留言板代码
  • 哪家网站遴选做的比较好武安做网站
  • 有没有可以做游戏的网站建材类网站建设方案
  • 建设银行官网首页网站深圳创新投资公司官网
  • 软件 行业门户网站python做网站好处
  • 网站在别人那里已经建好了_公司里要进行修改_怎么做口碑好网站建设费用
  • 建设社区网站有什么借鉴之处四川城乡和建设厅网站