public static class hiRef.V1<T> extends Object implements Serializable, AutoCloseable
引数に値を戻すための構造体です。
貧弱なJavaは引数に値を返す機能を持ちません。オブジェクトは全てポインタ渡し
なので、オブジェクトの値を変えることができれば、値を返すことが
できるのですが、Stringや各種primitiveラッパークラスには値を
セットするメソッドが用意されていません。
このため、値を返したいためだけに新たに値クラスを作成したり、
ひどい場合は、関数の脇に変数インターフェースを置くなど見苦しく
かつ危険な仕様を採用する場合もあります。
V1は、このような事態を避けるためのものです。
private HashMap<String,String> id_dict; private HashMap<String,Integer> sub_id_dict; public String foo(String name,V1<Integer> sub_id)throws Exception{ sub_id.value= sub_id_dict.get(name);// ここで返す値を設定している return id_dict.get(name); } // public void boo()throws Exception{ String name; // nameに値セット V1<Integer> sub_id=new V1(); String id= foo(name,sub_id); System.out.println("id="+id+" sub-id="+sub_id_value); }
残念ながら愚かなJavaの仕様のためprimitive型を直接置く V1<int> などは使えません。
public T value
public V1()
public V1(T val_)
val_
- valueにセットされるpublic String toString()
hiU.str(Object)
で文字列化されます。public boolean equals(hiRef.V1<T> that)
2つのV1<T>のvalue同士をそれぞれequals()比較し 値が一致するかどうかを調べます。ともにnullの場合も一致としています。
that
- 比較対象public void close()
close
インタフェース内 AutoCloseable
public T val()
public hiRef.V1 reset()