类似于以下内容:
参考示例:
void changeString(ref String str) {
str = "def";
}
void main() {
String abc = "abc";
changeString(ref abc);
System.out.println(abc); //prints "def"
}
输出示例:
void changeString(out String str) {
str = "def";
}
void main() {
String abc;
changeString(out abc);
System.out.println(abc); //prints "def"
}
发布于 2010-05-11 05:24:41
不,Java没有像C#的ref
和out
这样的关键字来通过引用传递。
在Java中只能通过值传递。甚至引用也是通过值传递的。有关更多详细信息,请参阅Jon Skeet关于parameter passing in Java的页面。
要执行类似于ref
或out
的操作,必须将参数包装在另一个对象中,并将该对象引用作为参数传递。
发布于 2010-05-11 05:38:33
直接回答:没有
但是您可以模拟reference with wrappers。
并执行以下操作:
void changeString( _<String> str ) {
str.s("def");
}
void testRef() {
_<String> abc = new _<String>("abc");
changeString( abc );
out.println( abc ); // prints def
}
输出
void setString( _<String> ref ) {
str.s( "def" );
}
void testOut(){
_<String> abc = _<String>();
setString( abc );
out.println(abc); // prints def
}
基本上是任何其他类型,例如:
_<Integer> one = new <Integer>(1);
addOneTo( one );
out.println( one ); // May print 2
发布于 2018-08-01 20:09:54
三种未正式明确提及的解决方案:
ArrayList<String> doThings() {
//
}
void doThings(ArrayList<String> list) {
//
}
Pair<String, String> doThings() {
//
}
对于配对,我推荐:https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/tuple/Pair.html
https://stackoverflow.com/questions/2806545
复制相似问题