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

做餐饮加盟的网站网站建设职业情况

做餐饮加盟的网站,网站建设职业情况,任务一 分析电子商务网站栏目结构,美容行业网站建设目录 1 单元测试1.1 单元测试概述1.2 单元测试快速入门1.3 JUnit 常用注解 2 反射2.1 反射概述2.2 获取类对象2.3 获取构造器对象2.4 获取成员变量对象2.5 获取常用方法对象2.6 反射的作用2.6.1 绕过编译阶段为集合添加数据2.6.2 通用框架的底层原理 1 单元测试 1.1 单元测试概… 目录 1 单元测试1.1 单元测试概述1.2 单元测试快速入门1.3 JUnit 常用注解 2 反射2.1 反射概述2.2 获取类对象2.3 获取构造器对象2.4 获取成员变量对象2.5 获取常用方法对象2.6 反射的作用2.6.1 绕过编译阶段为集合添加数据2.6.2 通用框架的底层原理 1 单元测试 1.1 单元测试概述 开发好的系统中存在很多方法如何对这些方法进行测试 以前我们都是将代码全部写完再进行测试。其实这样并不是很好。在以后工作的时候都是写完一部分代码就测试一部分。这样代码中的问题可以得到及时修复。也避免了由于代码过多从而无法准确定位到错误的代码。 单元测试就是针对最小的功能单元编写测试代码 Java 程序最小的功能单元是 方法因此单元测试就是针对 Java 方法的测试进而检查方法的正确性。 JUnit 是使用 Java 语言实现的单元测试框架它是开源的 Java 开发者都应当学习并使用 JUnit 编写单元测试。此外几乎所有的 IDE 工具都集成了 JUnit这样我们就可以直接在 IDE 中编写并运行 JUnit测试。 JUnit优点 可以灵活的选择执行哪些测试方法也可以一键执行全部测试方法可以生成全部方法的测试报告如果测试良好则是绿色如果测试失败则变成红色单元测试中的某个方法测试失败了不会影响其他测试方法的测试 1.2 单元测试快速入门 需求使用单元测试进行业务方法预期结果、正确性测试的快速入门 分析 将 JUnit 的 jar 包导入到项目中 IDEA 通常整合好了 JUnit 框架一般不需要导入。如果 IDEA 没有整合好需要自己手工导入如下 2 个 JUnit 的 jar 包到模块 编写测试方法该测试方法必须是公共的无参数无返回值的非静态方法。在测试方法上使用 Test 注解标注该方法是一个测试方法在测试方法中完成被测试方法的预期正确性测试。选中测试方法选择JUnit 运行 如果测试良好则是绿色如果测试失败则是红色 示例代码 要测试的方法 public class UserService {public String login(String name,String passwd){if (admin.equals(name) 123456.equals(passwd)){return 登陆成功;}else{return 用户名或密码错误;}}public void selectNames(){ // System.out.println(10/0);System.out.println(查询全部用户成功);} }测试方法 import org.junit.Assert; import org.junit.Test;public class TestUserService {// 测试方法公开的无参数无返回值的非静态方法Testpublic void testLogin(){UserService userService new UserService();String rs userService.login(admin, 123456);// 进行预期结果的正确性测试Assert.assertEquals(您的登录业务出现问题,登陆成功,rs);}Testpublic void testSelectNames(){UserService userService new UserService();// 要测试的方法没有返回值不用断言userService.selectNames();} }一个业务要对应一个测试方法 1.3 JUnit 常用注解 Junit 4.xxxx 版本 Junit 5.xxxx 版本 2 反射 2.1 反射概述 反射是指对于任何一个 Class 类在 运行的时候 都可以直接得到这个类全部成分。 在运行时 , 可以直接得到这个类的构造器对象 Constructor在运行时 , 可以直接得到这个类的成员变量对象Field在运行时 , 可以直接得到这个类的成员方法对象 Method 这种运行时动态获取类信息以及动态调用类中成分的能力称为 Java 语言的反射机制。 反射的第一步都是先得到编译后的 Class 类对象然后就可以得到 Class 的全部成分。 2.2 获取类对象 获取 class 对象的有以下三种方式 示例代码 Student 类 package com.huwei;public class Student {private String name;private int age;public Student() {System.out.println(无参构造器执行);}public Student(String name, int age) {System.out.println(有参构造器执行);this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic String toString() {return Student{ name name \ , age age };} }测试类 public class Test {public static void main(String[] args) throws ClassNotFoundException {// 1. 通过Class类中的静态方法forName(全限名)来获取Class c Class.forName(com.huwei.Student);System.out.println(c); // class com.huwei.Student// 2. 通过class属性来获取Class c1 Student.class;System.out.println(c1); // class com.huwei.Student// 3. 利用对象的getClass方法来获取Student s new Student();Class c2 s.getClass();System.out.println(c2); // class com.huwei.Student} }注意 第一种方式forName(String className)中的className为全限名包名类名 已经获取类对象了接下来就可以获取以下对象 2.3 获取构造器对象 Class类中用于获取构造器的方法 示例代码 import java.lang.reflect.Constructor;public class Test {public static void main(String[] args) throws NoSuchMethodException {// 获取类对象Class c Student.class; // System.out.println(c); // class com.huwei.Student// 提取类中全部的构造器只能是公开的构造器Constructor[] cons1 c.getConstructors();// 遍历构造器for (Constructor con : cons1) {System.out.println(con.getName() con.getParameterCount());}System.out.println(-------------------------------------);// 提取类中全部的构造器包括私有Constructor[] cons2 c.getDeclaredConstructors();// 遍历构造器for (Constructor con : cons2) {System.out.println(con.getName() con.getParameterCount());}System.out.println(-------------------------------------);// 获取单个构造器无参构造器只能是公开的如果无参构造器私有会报错Constructor con1 c.getConstructor();System.out.println(con1.getName() con1.getParameterCount());System.out.println(-------------------------------------);// 获取单个构造器无参构造器包括私有Constructor con2 c.getDeclaredConstructor();System.out.println(con2.getName() con2.getParameterCount());System.out.println(-------------------------------------);// 获取单个构造器有参构造器只能是公开的如果有参构造器私有会报错Constructor con3 c.getConstructor(String.class, int.class);System.out.println(con3.getName() con3.getParameterCount());System.out.println(-------------------------------------);// 获取单个构造器有参构造器包括私有Constructor con4 c.getDeclaredConstructor(String.class, int.class);System.out.println(con4.getName() con4.getParameterCount());} }获取构造器的作用依然是初始化一个对象返回 Constructor类中用于创建对象的方法 import java.lang.reflect.Constructor;public class Test2 {public static void main(String[] args) throws Exception{// 获取类对象Class c Student.class;// 获取单个构造器无参构造器包括私有Constructor con1 c.getDeclaredConstructor();System.out.println(con1.getName() con1.getParameterCount());// 如果遇到了私有构造器可以暴力反射con1.setAccessible(true); // 权限被打开仅当前这次Student s1 (Student) con1.newInstance();System.out.println(s1);System.out.println(--------------------------------);// 获取单个构造器有参构造器包括私有Constructor con2 c.getDeclaredConstructor(String.class, int.class);System.out.println(con2.getName() con2.getParameterCount());Student s2 (Student) con2.newInstance(孙悟空,50000);System.out.println(s2);} }如果遇到非 public 的构造器需要打开权限暴力反射然后再创建对象说明反射可以破坏封装性私有的也可以执行了 2.4 获取成员变量对象 Class类中用于获取成员变量的方法 示例代码 import java.lang.reflect.Field;public class Test3 {public static void main(String[] args) throws NoSuchFieldException {// 获取类对象Class c Student.class;// 获取全部成员变量包括私有Field[] fields c.getDeclaredFields();for (Field field : fields) {System.out.println(field.getName()field.getType());}System.out.println(----------------------);// 获取某一个成员变量包括私有 // Field field c.getDeclaredField(name);Field field c.getDeclaredField(age);System.out.println(field.getName()field.getType());} }获取成员变量的作用依然是在某个对象中取值、赋值 Filed 类中用于取值、赋值的方法 示例代码 import java.lang.reflect.Field;public class Test4 {public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {// 获取类对象Class c Student.class;// 获取某一个成员变量包括私有Field name c.getDeclaredField(name);name.setAccessible(true); // 暴力打开权限// 赋值Student s new Student();name.set(s,小明);System.out.println(s);// 取值String name1 (String) name.get(s);System.out.println(name1);} }2.5 获取常用方法对象 Class类中用于获取成员方法的方法 获取成员方法的作用依然是在某个对象中执行此方法 Method类中用于触发执行的方法 示例代码 定义Dog类 public class Dog {private String name;public Dog() {}public Dog(String name) {this.name name;}public void run(){System.out.println(狗在跑);}public String eat(String name){System.out.println(name在吃);return 吃的很开心;}private void eat(){System.out.println(吃啥);}}测试类 import java.lang.reflect.Method;public class Test5 {public static void main(String[] args) throws Exception {// 获取类对象Class c Dog.class;// 提取全部方法包括私有Method[] methods c.getDeclaredMethods();for (Method method : methods) {System.out.println(method.getName() method.getReturnType() method.getParameterCount());}// 提取单个方法包括私有Method eat1 c.getDeclaredMethod(eat); // 无参的eat方法Method eat2 c.getDeclaredMethod(eat, String.class); // 有参的eat方法eat1.setAccessible(true); // 暴力反射// 触发方法的执行Dog d new Dog();Object rs1 eat1.invoke(d); // 方法如果是没有返回值的则返回的是nullSystem.out.println(rs1);Object rs2 eat2.invoke(d, 小黑);System.out.println(rs2);} }2.6 反射的作用 2.6.1 绕过编译阶段为集合添加数据 反射是作用在运行时的技术此时集合的泛型将不能产生约束了此时是可以为集合存入其他任意类型的元素的。 泛型只是在编译阶段可以约束集合只能操作某种数据类型在编译成 Class 文件进入运行阶段的时候其真实类型都是 ArrayList 了泛型相当于被擦除了。 反射是作用在运行时的技术此时已经不存在泛型了。 示例代码 import java.lang.reflect.Method; import java.util.ArrayList;public class Demo {public static void main(String[] args) throws Exception{ArrayListString list1 new ArrayList();ArrayListInteger list2 new ArrayList();// 编译成 Class 文件进入运行阶段的时候泛型会自动擦除。 ArrayList.classSystem.out.println(list1.getClass()); // class java.util.ArrayListSystem.out.println(list2.getClass()); // class java.util.ArrayListSystem.out.println(list1.getClass() list2.getClass()); // trueSystem.out.println();ArrayListInteger list3 new ArrayList();list3.add(11);list3.add(22); // list3.add(哈哈哈); // 报错Class c list3.getClass(); // ArrayList.class public boolean add(E e) // // 定位c中的add方法Method add c.getDeclaredMethod(add, Object.class);boolean rs (boolean)add.invoke(list3, 嘿嘿嘿);System.out.println(rs); // trueSystem.out.println(list3); // [11, 22, 嘿嘿嘿]// 还有一种方法可以突破泛型的限制ArrayList list4 list3;list4.add(呜呼啦胡);list4.add(false);System.out.println(list3); // [11, 22, 嘿嘿嘿, 呜呼啦胡, false]} }2.6.2 通用框架的底层原理 反射可以做通用框架 需求给你任意一个对象在不清楚对象字段的情况可以可以把对象的字段名称和对应值存储到文件中去。 分析 定义一个方法可以接收任意类的对象。每次收到一个对象后需要解析这个对象的全部成员变量名称。这个对象可能是任意的那么怎么样才可以知道这个对象的全部成员变量名称呢使用反射获取对象的 Class 类对象然后获取全部成员变量信息。遍历成员变量信息然后提取本成员变量在对象中的具体值存入成员变量名称和值到文件中去即可 示例代码 存在Teacher、Student类 import java.io.FileOutputStream; import java.io.PrintStream; import java.lang.reflect.Field;public class MybatisUtil {/**保存任意类型的对象* param obj*/public static void save(Object obj){try (PrintStream ps new PrintStream(new FileOutputStream(reflect/src/data.txt, true));){// 1、提取这个对象的全部成员变量只有反射可以解决Class c obj.getClass(); // c.getSimpleName()获取当前类名 c.getName获取全限名包名类名ps.println( c.getSimpleName() );// 2、提取它的全部成员变量Field[] fields c.getDeclaredFields();// 3、获取成员变量的信息for (Field field : fields) {String name field.getName();// 提取本成员变量在obj对象中的值取值field.setAccessible(true);String value field.get(obj) ;ps.println(name value);}} catch (Exception e) {e.printStackTrace();}} }/**目标提供一个通用框架支持保存所有对象的具体信息。*/ public class ReflectDemo {public static void main(String[] args) throws Exception {Student s new Student();s.setName(猪八戒);s.setClassName(西天跑路1班);s.setAge(1000);s.setHobby(吃睡);s.setSex(男);MybatisUtil.save(s);Teacher t new Teacher();t.setName(波仔);t.setSex(男);t.setSalary(6000);MybatisUtil.save(t);} }结果文件
http://www.w-s-a.com/news/799855/

相关文章:

  • 学设计哪个网站好网页设计音乐网站
  • 可以自己做斗图的网站上海模板建站多少钱
  • 山东川畅信息技术有限公司网站建设网站开发任务书
  • 网站排版设计欣赏搭建公司介绍网站
  • 网站弹窗是怎么做的长沙智优营家
  • 手机网站菜单设计模板菜单网站图片素材
  • 浙江网站推广爱企查企业查询入口
  • 公司网站平台vs2012网站开发课程设计
  • 哪些方法可以建设网站做网站失败
  • 龙岗网站建设技术wordpress左右两栏
  • 电子商务网站开发与应用的介绍怎么查询域名是否备案
  • 想做一个自己设计公司的网站怎么做的权威发布型舆情回应
  • 做ppt用的音效网站python基础教程网易
  • 可以做免费广告的网站有哪些做视频赚钱的国外网站
  • 苏州做物流网站电话郑州网站高端网站设计
  • 网站建设音乐插件怎么弄wordpress添加数据库文件
  • 汽车行业做网站福建省第二电力建设公司网站
  • delphi做网站开发商城网站建设价位
  • 网站宣传片3 阐述网站建设的步骤过程 9分
  • 公司网站怎么做站外链接哪里有做胎儿dna亲子鉴定
  • 潍坊做电商的网站建设wordpress 特效主题
  • 做网站和app哪个难公司网上注册系统
  • 关于网站建设外文文献系部网站建设
  • 高端设计网站都有哪些月付网站空间提供商
  • 家政 东莞网站建设优化设计官方电子版
  • 做网站如何使用网页插件上海造价信息网
  • 承德网站制作加盟天津做优化的网站有多少家
  • 北京市保障性住建设投资中心网站首页专业做网站联系电话
  • 镇江网站建设方式优化单页面网站教程
  • 做手机网站公司北京网页设计公司兴田德润实惠