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

手机网站建设方案公司网站做的一样算不算侵权6

手机网站建设方案,公司网站做的一样算不算侵权6,重庆建设工程信息网官网登录,实业公司注册条件目录 1、反射 1.1 基本概念 1.2 反射相关的类 1.3 创建 Class 对象 1.4 反射的使用 1.4.1 通过反射创建对象#xff1a; 1.4.2 获取私有的构造方法 1.4.3 获取私有的成员变量 1.4.4 获取私有的方法 1.5 总结 2、枚举 2.1 认识枚举 2.2 使用枚举 2.3 枚举与反射… 目录 1、反射 1.1 基本概念 1.2 反射相关的类 1.3 创建 Class 对象 1.4 反射的使用 1.4.1 通过反射创建对象 1.4.2 获取私有的构造方法 1.4.3 获取私有的成员变量 1.4.4 获取私有的方法 1.5 总结 2、枚举 2.1 认识枚举  2.2 使用枚举 2.3 枚举与反射的那些事 3、Lambda 表达式 3.1 认识 Lambda 表达式 3.2 语法 3.3 函数式接口 3.4 Lambda 的基本使用 1、反射 1.1 基本概念 Java的反射reflection机制是在运行状态中对于任意一个类都能够知道这个类的所有属性和方法对于任意一个对象都能够调用它的任意方法和属性既然能拿到那么我们就可以修改部分类型信息这种动态获取信息以及动态调用对象方法的功能称为java语言的反射reflection机制。  1.2 反射相关的类 类名用途Class 类代表类的实体在运行的Java程序中表示类和接口Field 类代表类的成员变量/类的属性Method 类代表类的方法Constructor 类代表类的构造方法 每个类里面都有很多相关的方法啊这里具体的方法我就不一一列举出来了详细的可以去查看 Java 的官方文档。 1.3 创建 Class 对象 创建一个 Class 对象通常使用以下三种方法 1. 调用某个对象里面的 getClass 方法 public static void main(String[] args) {Student student new Student();Class? c1 student.getClass(); } 2. 采取类名.class的方法 public static void main(String[] args) {Class? c2 Student.class; //这种方法说明每个类默认隐式包含一个静态的成员变量 class } 3. 通过 Class.forName() 获取 public static void main(String[] args) {Class? c3 null;try {c3 Class.forName(Student);} catch (ClassNotFoundException e) {e.printStackTrace();} } 注意这个 forName 中要放传入类的完整路径比如如果是 String 的话即java.lang.String 1.4 反射的使用 这里我们自定义一个 Student 类 public class Student {private String name;private int age;public Student() {System.out.println();}private Student(String name, int age) {this.name name;this.age age;}public void eat() {System.out.println(name 正在吃饭);}private void sleep() {System.out.println(name 正在睡觉);}Overridepublic String toString() {return Student{ name name \ , age age };} } 1.4.1 通过反射创建对象 public static void reflectClassDemo() {try {Class? c Class.forName(Student);Object objectStudent c.newInstance();} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {e.printStackTrace();} } 1.4.2 获取私有的构造方法 public static void reflectPrivateConstructor() {try {Class? c Class.forName(Student);Constructor? constructor c.getDeclaredConstructor(String.class, int.class);constructor.setAccessible(true); //设置为true后可修改访问权限Object objectStudent constructor.newInstance(张三, 12);System.out.println(objectStudent);} catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException | InstantiationException e) {e.printStackTrace();} } 1.4.3 获取私有的成员变量 public static void reflectPrivateField() {try {Class? c Class.forName(Student);Field field c.getDeclaredField(name); //获取名为 name 的成员变量field.setAccessible(true);Object student c.newInstance();field.set(student, 张三); //将 student 对象的name 设置成 张三System.out.println(field.getName());} catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException | InstantiationException e) {e.printStackTrace();} } 1.4.4 获取私有的方法 public static void reflectPrivateMethod() {try {Class? c Class.forName(Student);Method method c.getDeclaredMethod(eat);method.setAccessible(true);//方法有参数的写法//Method methodStudent classStudent.getDeclaredMethod(function,String.class);Object objectStudent c.newInstance();Student student (Student)objectStudent;System.out.println(私有方法方法名: method.getName());method.invoke(objectStudent); // 调用获取到的方法, student对象中的} catch (InstantiationException | InvocationTargetException | NoSuchMethodException | IllegalAccessException | ClassNotFoundException e) {e.printStackTrace();} } 1.5 总结 在反射眼中对应任意一个类都能够知道这个类的属性和方法对于任意一个对象都能调用它任意一个方法 这样使程序的灵活性大大提高以及可扩展性但是这样一来似乎就在告诉大家之前封装的一些方法和属性在反射面前就是一个摆设。 反射是一把双刃剑是一种非常规的编程手段不到必要的时候不建议使用反射使用反射会有效率问题。会导致程序效率降低而且反射技术绕过了源代码的技术因而会带来维护问题。反射代码比相应的直接代码更复杂 。 2、枚举 2.1 认识枚举  枚举顾名思义一一列举作用将一组常量组织起来Java中常量就是常量并没有常变量这种说法利用我们现在的知识如果让你定义三个常量分别表示 红色黑色绿色你可能会这样定义 public static final int RED 1; public static final int BLACK 3; public static final int GREEN 3; 这样的话代码中出现的 1有可能会被误认为是 RED是可能会出现歧义的于是就有一种类型枚举来进行组织 public enum MyEnum {RED, BLACK, GREEN; } 这样里面定义的每个都是枚举类型不再是普通的数字了我们自己写的 enum 会默认继承 Enum 类所以不用显示的去继承 Enum 这个抽象类。 2.2 使用枚举 public static void main(String[] args) {MyEnum myEnum MyEnum.BLACK;switch (myEnum) {case RED:System.out.println(红色);break;case BLACK:System.out.println(黑色);break;case GREEN:System.out.println(绿色);break;default:System.out.println(其他颜色);break;} } 使用场景错误状态码消息类型颜色的划分状态机等等.... Enum 类的常用方法 方法名称描述values()以数组的形式返回枚举类型的所有成员ordinal()获取枚举成员的索引位置valueOf()将普通字符串转换为枚举类型compareTo()比较两个枚举成员在定义时候的顺序 枚举是一种类型也就是Java中的枚举就是一个类那么就可以这样去写代码 public enum MyEnum {RED(红色, 1), BLACK(黑色, 2), GREEN(绿色, 3);private String name;private int key;private MyEnum(String name, int key) {this.name name;this.key key;} } 枚举的构造方法默认是私有的. 枚举常量是更简单安全的安全体现在哪马上就说到了而且枚举拥有内置方法使用起来方便缺点也有由于Java中支持单继承因此枚举类型不能再继承其他类无法扩展。 2.3 枚举与反射的那些事 通过反射能否拿到枚举的私有构造方法呢我们写个代码来测试一下 public class TestMyEnum {public static void main(String[] args) {try {Class? c Class.forName(MyEnum);Constructor? constructor c.getDeclaredConstructor(String.class, int.class);constructor.setAccessible(true);Object myEnum constructor.newInstance(红色, 123);} catch (Exception ex) {ex.printStackTrace();}} } 这里居然报错了报错信息提示没有该构造方法为什么会没有呢我们的 MyEnum 默认继承了 Enum 类实例化子类对象的时候先调用父类的构造方法那么这里我们就去看一下 Enum 的构造方法。 Enum 只有这一个构造方法还带有两个参数但是在 JavaSE 的学习中如果在子类的构造方法中没有显式写明 super()则会在子类构造方法第一行默认有 super()也就是调用父类的无参构造枚举比较特殊虽然我们写的是两个但默认他还添加了 name和 ordinal 参数。也就是说我们需要提供四个参数 Constructor? constructor c.getDeclaredConstructor(String.class, int.class, String.class, int.class); constructor.setAccessible(true); Object myEnum constructor.newInstance(红色, 123, 红色, 321); 这里还是报错了但是这里的报错是第10行的newInstance 方法报错那么我们就进入该方法源码去一看究竟 在JavaSE语法上if 中的 会被认为 所以枚举在这里被过滤了这也就是你不能通过反射获取到枚举类的实例 所以在这里可以发现枚举是安全的可以避免反射的问题。 3、Lambda 表达式 3.1 认识 Lambda 表达式 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码 块)。 Lambda 表达式Lambda expression基于数学中的 λ 演算得名也可称为闭包Closure。  3.2 语法 基本语法: (parameters) - expression 或 (parameters) - { statements; } Lambda表达式由三部分组成 1. paramaters类似方法中的形参列表这里的参数是函数式接口里的参数。这里的参数类型可以明确的声明 也可不声明而由JVM隐含的推断。另外当只有一个推断类型时可以省略掉圆括号。 2. -可理解为“被用于”的意思3. 方法体可以是表达式也可以代码块是函数式接口里方法的实现。代码块可返回一个值或者什么都不反 回这里的代码块块等同于方法的方法体。如果是表达式也可以返回一个值或者什么都不反回。 3.3 函数式接口 函数式接口一个接口中只有一个抽象方法。 FunctionalInterface 注解如果我们在某个方法上声明了该注解那么编译器就会按照函数式接口的定义来要求该接口。如果不符合函数式接口的语法那么则会报错 例子 FunctionalInterface public interface TestFuncInterface {void work(); }也可也这样写 FunctionalInterface public interface TestFuncInterface {void work();default void test() {System.out.println(hello);} } 在 JDK 1.8 中default 默认方法可以有具体的实现。 3.4 Lambda 的基本使用 //无返回值无参数 FunctionalInterface interface NoParameterNoReturn {void work(); } //无返回值一个参数 FunctionalInterface interface OneParameterNoReturn {void work(int a); } //无返回值多个参数 FunctionalInterface interface MoreParameterNoReturn {void work(int a,int b); } //有返回值无参数 FunctionalInterface interface NoParameterReturn {int work(); }//有返回值一个参数 FunctionalInterface interface OneParameterReturn {int work(int a); } //有返回值多参数 FunctionalInterface interface MoreParameterReturn {int work(int a,int b); }public class TestLambda {public static void main(String[] args) {NoParameterNoReturn n1 () - System.out.println(NoParameterNoReturn);n1.work();// 只有一个参数, 可以省略小括号OneParameterNoReturn n2 x - {System.out.println(x OneParameterNoReturn);System.out.println(多条语句则不能省略大括号);};n2.work(5);MoreParameterNoReturn n3 (x, y) - System.out.println(x y OneParameterNoReturn);n3.work(5, 8);NoParameterReturn n4 () - 88; //只有 return 一条语句可以省略 returnint ret1 n4.work();OneParameterReturn n5 (x) - {System.out.println(OneParameterReturn);return x 10; //多条语句时, return 和 {} 都不能省略};int ret2 n5.work(12);// 如果不省略形参类型, 必须都不省略, 省略的话必须全部省略MoreParameterReturn n6 (int x, int y) - (x y 8);int ret3 n6.work(5, 5);} } Lambda表达式的优点很明显在代码层次上来说使代码变得非常的简洁。缺点也很明显代码不易读。至于 Lambda 的更多使用会在后续文章中慢慢体现出来。这里我们了解下语法即可。 优点 代码简洁开发迅速方便函数式编程非常容易进行并行计算ava 引入 Lambda改善了集合操作(比如传比较器)缺点 代码可读性变差在非并行计算中很多计算未必有传统的 for 性能要高不容易进行调试下期预告【MySQL】数据库的基本认识
http://www.eeditor.cn/news/122541/

相关文章:

  • 深圳营销型网站建设公司网络服务网站建设合同文百科
  • 上海知名 网站设计公司如何让别人浏览我做的网站
  • 娄底建设网站的公司手机网站大全下载
  • 郑州百度网站推广电商平台运营费用预算
  • 鸭梨网站建设杭州西湖区抖音seo方案
  • 沈阳手机网站建设提供做网站公司
  • 久其软件公司网站外链交换平台
  • 网站建设书生商友宁波关键词排名优化
  • 网站反向链接学校网站建设 应用情况
  • 国外创意摄影网站vps服务器的iis网站
  • 网站抓取诊断ip出错苏州seo网站公司
  • 服务器放多个网站自己做一个app
  • 网站建设静态部分实训总结沈阳三好街附近做网站
  • 上饶建设局网站购物网站建设款流程
  • 七台河网站网站建设wordpress的模板目录在哪里
  • 个人网站欣赏的网站简要说明网站制作的基本步骤
  • 做网站 建站saas建站平台
  • 小型网站建设价格低里水网站开发
  • 舟山网站开发免费设计企业logo
  • 手机网站做安卓客户端网站建设推广公司哪家权威
  • 东莞网站建设 烤活鱼桂林做手机网站设计
  • wordpress迁站到阿里云人才网网站开发手册
  • 雅安公司做网站wordpress 优势
  • dede 网站改宽屏代码seo 优化一般包括哪些内容
  • 网站建设一定要买数据盘吗设计做的网站哪些好
  • ps做网站首页规范尺寸腾讯云一键wordpress
  • 鞍山做网站比较好的公司酒泉网站建设公司
  • 广州网站建设智能 乐云践新织梦手机网站
  • 网站建设实训总结及体会微信网站建设教程
  • 网站开发微信支付详细教程昆山建设工程安监站网站