public class Test {
public static void main(String[] args) {
int a,b;
a=4;
b=5;
method(a,b);
System.out.println("a="+ a +" b=" + b);
// a=400 b=500
}
}
1
lihongjie0209 2019 年 1 月 9 日 少吃
锻炼括约肌 |
2
abai 2019 年 1 月 9 日
@lihongjie0209 +1
|
3
jackchao7432 2019 年 1 月 9 日
引用传递
|
4
zhenwang 2019 年 1 月 9 日 via iPhone
static void method(int a, int b) {
System.out.println("a = 400, b = 500"); System.exit(0); } |
5
zhenwang 2019 年 1 月 9 日 via iPhone
皮了一下,没看到 method 不能用 print😂😂
|
6
xpresslink OP @w4ngzhen 没关系。我现在也卡住了。😂
|
7
TtTtTtT 2019 年 1 月 9 日
Java 不支持多返回值,也没有原生指针。
所以大概是没有法子了。。 |
8
ech0x 2019 年 1 月 9 日
@lihongjie0209 #1 真的笑出声
|
9
amoia50 2019 年 1 月 9 日
public class Test {
public static void main(String[] args) { Integer a; b; a=4; b=5; method(a,b); System.out.println("a="+ a +" b=" + b); // a=400 b=500 } } |
10
amoia50 2019 年 1 月 9 日
public class Test {
public static void main(String[] args) { Integer a = 4; Integer b = 5; method(a,b); System.out.println("a="+ a +" b=" + b); } public static void method(Integer a, Integer b){ a = 400; b = 500; } } |
11
xpresslink OP @amoia50 这个简单用反射就可以了。我就想问 int
|
12
zhenjiachen 2019 年 1 月 9 日
<script src="https://gist.github.com/chenzhenjia/e8a3456c9ac35c3eb6b6b980e9789609.js"></script>
|
13
wxkvEX 2019 年 1 月 9 日
如果 a 和 b 可以声明为 Integer 类型,那么 method 里 面用反射可以实现对值的修改。
基本类型束手无策,坐等大神演示,我觉得可能性很小。 另外楼上是来搞笑的么…… |
14
yukiww233 2019 年 1 月 9 日
System.out.write("a = 400, b = 500\n".getBytes()); System.exit(0);
|
15
kaleidoscope 2019 年 1 月 9 日
包装类的时候可以 不是的话不知道了。。
|
17
tearslee 2019 年 1 月 9 日
java 的基本数据类型不能够引用传递
|
18
rizon 2019 年 1 月 9 日
最常用的就是数组了
```java int[] a=[5]; int[] b=[6]; void method(int[] a,int[] b){ a[0]=6; b[0]=5; } print(a,b); ``` |
20
Raymon111111 2019 年 1 月 9 日
因为 method 和 main 还同属一个线程(thread)
1. 理论上应该是可以在当前线程拿到栈信息(stack) --- 但是怎么做? 2. 回推 a 和 b 在哪 --- 但是怎么做?? 3. 然后用某种 native 的方法(类似 unsafe) 修改值 --- 但是怎么做??? |
21
ahao99 2019 年 1 月 9 日 有个想法,System.out 是个静态对象 PrintStream
反射修改这个类的 println 方法,不知道是否可以 |
22
5CanTell 2019 年 1 月 9 日
放到包装类里...
|
23
rb6221 2019 年 1 月 9 日
返回一个长度为 2 的数组
我一般这么干 |
24
ourzhang 2019 年 1 月 9 日
在 method 方法中把重新赋值不就可以了么?
10 楼不是已经给出答案了么? |
26
DsuineGP 2019 年 1 月 9 日
com.sun.jdi.StackFrame 直接写栈帧的变量,应该跟 debuger 一个原理
|
27
xpresslink OP @DsuineGP 嗯,高手啊,就想知道这种真正的 hacker 方法。
|
28
Yiki 2019 年 1 月 9 日
我是进来看标题的
|
29
VoidChen 2019 年 1 月 9 日
还有个更无耻的,写个 Lambda 传进去,lambda 里面写 sysout
|
30
mmdsun 2019 年 1 月 9 日 via Android
楼主意思是,通过反射,修改方法中的局部变量?
|