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