0

java.util.Collections.reverse()のドキュメントを参照してください。

Java メソッドがどのように値渡ししかできないのか理解できませんが、次のことは許可されています。

public static void reverse(List<?> list)

パラメータを介して渡された元のオブジェクトをどのように変更できますか? 特に、パラメータを介して渡されるすべてのオブジェクトが値で渡される場合は? これは、オブジェクトのコピーのみが渡され、したがって参照のみが返される可能性があることを意味するべきではありませんか? void を返しているので、通過する元のオブジェクトをどのように変更できますか?

  • 混乱するジャバ・パダワン
4

3 に答える 3

2

アンディの答えに加えて:

参照の値をリストに渡し、元の参照を変更することはできません。これは、次のことを示すためのものです。

public static void main(String[] args) throws Exception {
    List<Integer> list = Arrays.asList(1, 1, 1);
    test(list);
    System.out.println(list);
}

public static void test(List<?> list) {
    list = Arrays.asList(2,2,2);
}

テストメソッドで [2, 2, 2] をリストに割り当てましたが、それでも [1, 1, 1] を出力します

于 2013-04-23T03:48:02.857 に答える
0

パラメータを介して渡された元のオブジェクトをどのように変更できますか?

参照を渡しますが、オブジェクトを渡すことはできません。

特に、パラメータを介して渡されるすべてのオブジェクトが値で渡される場合は?

参照は、オブジェクトではなく値で渡されます。

それは、オブジェクトのコピーだけが渡されることを意味するべきではありません。

参照のコピーのみが渡されます。

したがって、参照のみを返すことができますか?

参照は返されない唯一のものです。

void を返しているので、通過する元のオブジェクトをどのように変更できますか?

参照を変更することはできませんが、参照が指すものは変更できます。

于 2013-04-23T05:55:49.317 に答える