2006/02/09
Javaでタプルを返したい
Java初心者の開発者です。
PythonやPerlのようにJavaのメソッド返したいのですが、どうすればいいのでしょう?Pythonだと
def func(): return 1, "func"
のようにかけます。Cの場合だと、
void func(int* i, char** s) { *i = 1 *s = "hoge"; }
のようになります。Javaではどう書くのが正しいのでしょう。僕が思いついた方法を書きます。
方法1(配列を使う):
class C { void func(int[] i, String[] s) { i[0] = 1; s[0] = "hoge"; } }
方法2(オブジェクトを返す):
class C { public class D { public int i; public String s; } D func() { D d = new D(); d.i = 1; d.s = "hoge"; return d; } }
最初の方法だとC的で古い世代の人だとばれてしまいます。二つ目の方法だと、単にデータを返したいためだけにクラスを定義するので、違和感があります。
Java的にはどうすればよいのでしょうか?
- Category(s)
- 開発
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/dev/java30bf30eb30928fd43057305f3044/tbping
Re:Javaでタプルを返したい
Object[] func() {
return new Object[]{new Interger(1), "hoge"};
}
JDK1.5なら
Object[] func() {
return new Object[]{1, "hoge"};
}
Genericを使って、
public class Tuple
public L left;
public R right;
Tuple(L left, R right) {
this.left = left;
this.right = right;
}
}
Tuple
return new Tuple
}
3値のTupleを返す場合は、
Tuple
return new Tuple
}
動くかどうかは知りません。
Re:Javaでタプルを返したい
困ったもんだ。
public class Tuple<L, R> {
public L left;
public R right;
Tuple(L left, R right) {
this.left = left;
this.right = right;
}
}
Tuple<Integer, String> func() {
return new Tuple<Integer, String>(1, "hoge");
}
Tuple<Integer, Tuple<String, Double>> func3() {
return new Tuple<Integer, Tuple<String, Double>>(1, new Tuple<String, Double>("hoge", 3.14);
}