Sea*_*oyd 37
Java中不可能实现真正的传递.Java按值传递所有内容,包括引用.但您可以使用容器对象模拟它.
使用以下任何方法作为方法参数:
如果您在方法中更改其内容,则更改的内容将可用于调用上下文.
哎呀,你显然是指通过引用调用方法.这在Java中也是不可能的,因为方法在Java中不是一级公民.这可能会在JDK 8中发生变化,但就目前而言,您必须使用接口来解决此限制.
public interface Foo{
void doSomeThing();
}
public class SomeFoo implements Foo{
public void doSomeThing(){
System.out.println("foo");
}
}
public class OtherFoo implements Foo{
public void doSomeThing(){
System.out.println("bar");
}
}
Run Code Online (Sandbox Code Playgroud)
使用Foo在你的代码,这样你就可以很容易地替换SomeFoo使用OtherFoo.
Ste*_*n C 12
如何在Java中通过引用调用?
您无法通过Java中的引用进行调用.期.什么都没有接近.并且通过值传递引用与通过引用调用不同.
(真正的"通过参考调用"允许你做这样的事情:
void swap(ref int i, ref int j) { int tmp = *i; *i = *j; *j = tmp }
int a = 1;
int b = 2;
swap(a, b);
print("a is %s, b is %s\n", a, b); // -> "a = 2, b = 1"
Run Code Online (Sandbox Code Playgroud)
你根本无法用Java做到这一点.)
既然Java不支持指针......
虽然这在技术上是正确的,但它不会妨碍你想要做的事情.
Java 确实支持引用,它们在最重要的方面就像指针一样.不同之处在于,您不能通过对引用进行算术处理,将引用转换为整数类型等等来将引用视为内存地址.并且您无法创建对变量的引用,因为Java或JVM体系结构中不存在该概念.
如何在Java中通过引用来调用函数,就像在C和C++中一样?
在Java中,函数(方法)和函数引用不支持作为值.因此,您不能将它们作为参数传递,也不能将它们分配给变量.
但是,您可以使用一个实例方法定义一个类,并使用该类的实例而不是函数引用.其他答案举例说明了这种方法.
| 归档时间: |
|
| 查看次数: |
83918 次 |
| 最近记录: |