/* * 練習問題3.11 p.99 * ソートアルゴリズムが、気づかれることなくメトリックスに関して不正を行えるSortDoubleのセキュリティホールを * 少なくとも1つ見つけなさい。そのセキュリティホールをなくすように修正しなさい。 * この場合、ソートアルゴリズムの作成者はmainを書かないと想定してください */ package ch03.ex03_11; final class SortMetrics implements Cloneable { public long probeCnt, // 単純なデータの値調査 compareCnt, // 2つの要素の比較 swapCnt; // 2つの要素の交換 public void init() { probeCnt = swapCnt = compareCnt = 0; } public String toString() { return probeCnt + " probes " + compareCnt + " compares " + swapCnt + " swaps"; } /** このクラスは、cloneをサポートしている */ public SortMetrics clone() { try { // デフォルトの仕組みで十分 return (SortMetrics) super.clone(); } catch (CloneNotSupportedException e) { // 起こり得ない。このクラスとObjectは複製できる throw new InternalError(e.toString()); } } }