java如何查看调用记录_查看Java记录
java如何查看調(diào)用記錄
JEP 359 (可在JDK 14中用作預(yù)覽功能)將記錄引入Java。 記錄是對普通數(shù)據(jù)聚合建模的簡單方法。
一個簡單的范圍記錄如下所示:
record Range( int from, int to) {}記錄定義實際上與具有以下內(nèi)容的最終類相同:
- 不變的領(lǐng)域
- 公共訪問者
- 構(gòu)造函數(shù)
- equals(),hashCode()和toString()的實現(xiàn)
因此,我們可以像這樣使用記錄:
Range range = new Range( 1 , 5 ); int from = range.from(); // 1 int to = range.to(); // 5 String toString = range.toString(); // Range[from=1, to=5] boolean equals = range.equals( new Range( 1 , 5 )); // true請注意,訪問器的名稱是from()和to(),而不是getFrom()和getTo()。
構(gòu)造函數(shù)呢?
假設(shè)我們要向Record中添加一個構(gòu)造函數(shù)以執(zhí)行一些驗證:
record Range( int from, int to) { public Range( int from, int to) { if (from > to) { throw new IllegalArgumentException(); } this .from = from; this .to = to; } }這樣可以避免創(chuàng)建無效的Range實例。 但是,我們不得不多次寫下from和to字段來執(zhí)行簡單的驗證,這有點令人討厭。
為了避免這種情況,我們可以使用一種特殊形式的記錄構(gòu)造函數(shù),稱為緊湊構(gòu)造函數(shù)。 這使我們可以跳過定義構(gòu)造函數(shù)參數(shù)并將構(gòu)造函數(shù)參數(shù)分配給字段的操作。 看起來像這樣:
record Range( int from, int to) { public Range { if (from > to) { throw new IllegalArgumentException(); } } }結(jié)果的工作原理與先前的構(gòu)造函數(shù)完全相同。
定制方法
我們還可以添加新方法并覆蓋記錄中的現(xiàn)有方法。
例如:
record Range( int from, int to) { public int getDistance() { return to - from; } @Override public String toString() { return String.format( "Range[from: %s, to: %s, distance: %s]" , from, to, getDistance()); } }為什么記錄有用?
如果我們需要一個簡單的類來傳遞數(shù)據(jù),記錄只會減少我們必須編寫的代碼量。 用例示例是方法,復(fù)合映射鍵或數(shù)據(jù)傳輸對象的多個返回值。
假設(shè)要在集合中找到最小值和最大值。 使用記錄,您可以只用一行創(chuàng)建兩個值的返回類型:
record MinMax( int min, int max) {} static MinMax minMax(Collection<Integer> numbers) { ... }(是的,您可以使用單獨的方法來找到最小值和最大值。但是,然后您必須對集合進(jìn)行兩次迭代)
記錄還提供了一種創(chuàng)建復(fù)合Map鍵的簡便方法:
record NameAndDayOfBirth(String name, LocalDate dob) {} private Map<NameAndDayOfBirth, Person> entries = ...;摘要
記錄提供了一種不太冗長的方式來創(chuàng)建簡單的數(shù)據(jù)持有人。 常見的用例是多個返回值,復(fù)合映射鍵或數(shù)據(jù)傳輸對象。 有關(guān)記錄的更多背景信息,我推薦Brian Goetz撰寫的這篇文章 。
您可以在GitHub上找到示例代碼。
翻譯自: https://www.javacodegeeks.com/2020/05/looking-at-java-records.html
java如何查看調(diào)用記錄
總結(jié)
以上是生活随笔為你收集整理的java如何查看调用记录_查看Java记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打破双亲委派么,怎么打破_打破了vs你错
- 下一篇: jq怎么实现代码复用(jquery提高代