日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java反射机制和junit的使用

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java反射机制和junit的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 反射的原理

JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為java語言的反射機制。

  • 應用在一些通用性比較高的代碼中

  • 后面學到的框架,大多數都是使用反射來實現的

  • 在框架開發中,都是基于配置文件開發

  • 在配置文件中配置了類,可以通過反射得到類中的所有內容,可以讓類中的某個方法來執行

  • 類中的所有內容:屬性、沒有參數的構造方法、有參數的構造方法、普通方法

畫圖分析反射的原理

  • 首先需要把java文件保存到本地硬盤 .java

  • 編譯java文件,成.class文件

  • 使用jvm,把class文件通過類加載加載到內存中

  • 萬事萬物都是對象,class文件在內存中使用Class類表示

  • 當使用反射時候,首先需要獲取到Class類,得到了這個類之后,就可以得到class文件里面的所有內容,包含屬性、構造方法和普通方法。

    2. 使用反射操作類里面的無參構造方法

    public class Student {private String name;private int age; ?public Student() {super();} ?public Student(String name, int age) {super();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;} ?public void show() {System.out.println("show");} ?public void method(int x, int y) {System.out.println(x + "method" + y);} }

    測試類:

    @Testpublic void test1() throws Exception {// 得到ClassClass clazz = Class.forName("com.yfy.Student");// 獲取無參構造方法Student s = (Student) clazz.newInstance();s.setName("張三");s.setAge(20);System.out.println(s.getName() + "--" + s.getAge());}

    3. 使用反射操作有參數的構造方法

    @Testpublic void test2() throws Exception {// 得到ClassClass clazz = Class.forName("com.yfy.Student");// 使用有參數的構造方法// c1.getConstructors();//獲取所有的構造方法// 傳遞是有參數的構造方法里面參數類型,類型使用class形式傳遞Constructor con = clazz.getConstructor(String.class, int.class);// 通過有參數的構造方法創建Student實例Student s = (Student) con.newInstance("李四", 18);System.out.println(s.getName() + "--" + s.getAge());}

    4. 使用反射操作屬性

    @Testpublic void test3() throws Exception {// 得到ClassClass clazz = Class.forName("com.yfy.Student");// 獲取Student類中的字段,包括私有Field field = clazz.getDeclaredField("name");// 對私有字段的訪問取消權限檢查。暴力訪問。field.setAccessible(true);Student s = (Student) clazz.newInstance();// 給s對象的name屬性賦值field.set(s, "王五");//得到該字段在s對象中的屬性值System.out.println(field.get(s));}

    5. 使用反射操作普通方法

    @Testpublic void test4() throws Exception {// 得到ClassClass clazz = Class.forName("com.yfy.Student");// 獲取帶參數的構造方法Constructor con = clazz.getConstructor(String.class, int.class);Student s = (Student) con.newInstance("李四", 18);//獲取類中的帶參方法Method method=clazz.getMethod("method", int.class,int.class);//調用帶參方法method.invoke(s, 3,7);//獲取類中的無參方法Method method1=clazz.getMethod("show");//調用無參方法method1.invoke(s);}
    • getDeclaredMethod(方法名稱,方法里面參數的類型):得到任意一個方法,包括私有

    • getDeclaredMethods():得到所有方法,包括私有。

    • setAccessible(true):對私有方法取消權限檢查。

    6. junit的使用

    JUnit 是一個 Java 編程語言的單元測試框架。JUnit 在測試驅動的開發方面有很重要的發展,是起源于 JUnit 的一個統稱為 xUnit 的單元測試框架之一。

    junit注解

  • @Test:這個注釋說明依附在 JUnit 的 public void 方法可以作為一個測試案例。

  • @Before:有些測試在運行前需要創造幾個相似的對象。在 public void 方法加該注釋是因為該方法需要在 test 方法前運行。

  • @After:如果你將外部資源在 Before 方法中分配,那么你需要在測試運行后釋放他們。在 public void 方法加該注釋是因為該方法需要在 test 方法后運行。

  • @BeforeClass:在 public void 方法加該注釋是因為該方法需要在類中所有方法前運行。

  • @AfterClass:它將會使方法在所有測試結束后執行。這個可以用來進行清理活動。

  • @Ignore:這個注釋是用來忽略有關不需要執行的測試的。

  • 執行過程

    • beforeClass(): 方法首先執行,并且只執行一次。

    • afterClass():方法最后執行,并且只執行一次。

    • before():方法針對每一個測試用例執行,但是是在執行測試用例之前。

    • after():方法針對每一個測試用例執行,但是是在執行測試用例之后。

    • 在 before() 方法和 after() 方法之間,執行每一個測試用例。

    斷言

    unit所有的斷言都包含在 Assert 類中。

    這個類提供了很多有用的斷言方法來編寫測試用例。只有失敗的斷言才會被記錄。Assert 類中的一些有用的方法列式如下:

    方法描述
    assertEquals(boolean expected, boolean actual)檢查兩個變量或者等式是否平衡
    assertTrue(boolean expected, boolean actual)檢查條件為真
    assertFalse(boolean condition)檢查條件為假
    assertNotNull(Object object)檢查對象不為空
    assertNull(Object object)檢查對象為空
    assertSame(boolean condition)檢查兩個相關對象是否指向同一個對象
    assertNotSame(boolean condition)檢查兩個相關對象是否不指向同一個對象
    assertArrayEquals(expectedArray, resultArray)檢查兩個數組是否相等

    總結

    以上是生活随笔為你收集整理的java反射机制和junit的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 二区三区视频 | 国产在线拍揄自揄拍无码视频 | 色综合五月| 不卡av片 | 波多野结衣家庭主妇 | 在线观看涩涩 | 日韩午夜电影网 | wwwxx国产 | 免费人成网站 | 成人看片泡妞 | 爱爱小视频免费看 | 国产69久久精品成人看 | 免费观看h片 | 最新欧美日韩 | 狠狠网 | 91精品视频免费在线观看 | 国产1区2区3区中文字幕 | 96视频在线观看 | 91在线网址 | 免费一级肉体全黄毛片 | 蜜桃久久av | 最近中文字幕免费 | 深爱综合网 | 亚洲精品福利视频 | 一区二区日韩视频 | 欧美专区在线播放 | 一级片aaa | 成人精品视频在线 | 欧美日韩成人在线播放 | 狗爬女子的视频 | 4虎最新网址 | 日本视频黄色 | 操丰满女人 | 色av综合网| 亚欧av在线 | av片网| 国模吧一区二区 | 永久免费的av网站 | 美女黄站| 国产精品一区二区视频 | 91美女在线观看 | 精品久久久久久久久久久久久久 | 白丝校花扒腿让我c | 成人免费xxxxx在线视频 | 岳奶大又白下面又肥又黑水多 | 一级的大片 | 成人精品免费看 | 国产欧美一区二区精品性色超碰 | 青青在线观看视频 | 国产又粗又长又硬免费视频 | wwwxxx在线播放 | 欧美性受xxxx黑人xyx性 | 日本在线看片 | 日韩中文字幕av电影 | 男人狂揉女人下部视频 | 欧美粉嫩videosex极品 | 欧美超逼视频 | 2021国产在线视频 | 亚洲性图第一页 | 好吊色在线观看 | 黄av在线播放 | 天堂中文在线最新 | 日韩欧美亚洲综合 | 久久天 | 本道综合精品 | 国产91网址| 91福利社在线观看 | 欧美日韩在线国产 | 欲色综合 | 免费三级大片 | 正在播放久久 | 成人小视频免费在线观看 | 欧美日韩综合网 | 大色综合 | 免费观看的av网站 | 国产精品女人久久久 | 国产传媒一区 | 久久久久久久久久免费视频 | 免费大片黄在线观看视频网站 | 欧美用舌头去添高潮 | 欧美性xxxxx 亚洲特黄一级片 | 色香蕉网站 | 午夜福利三级理论电影 | 一二区在线视频 | 97国产精品视频 | 国产又黄又猛又粗又爽 | 亚洲1页 | 久久综合伊人 | 国产一级视频 | 男人天堂成人 | 精品国产鲁一鲁一区二区张丽 | 亚洲a级在线观看 | 亚洲午夜精品一区二区 | 国内精久久久久久久久久人 | 91中文字幕在线观看 | 天堂在线中文资源 | 内射后入在线观看一区 | 中文字幕 自拍偷拍 | 老女人一毛片 |