在通过构造函数传递给匿名类的最终变量中,Jon
Skeet提到了变量是通过自动生成的构造函数传递给匿名类实例的。在这种情况下,为什么我看不到使用反射的构造函数:
public static void main(String... args) throws InterruptedException {
final int x = 100;
new Thread() {
public void run() {
System.out.println(x);
for (Constructor<?> cons : this.getClass()
.getDeclaredConstructors()) {
StringBuilder str = new StringBuilder();
str.append("constructor : ").append(cons.getName())
.append("(");
for (Class<?> param : cons.getParameterTypes()) {
str.append(param.getSimpleName()).append(", ");
}
if (str.charAt(str.length() - 1) == ' ') {
str.replace(str.length() - 2, str.length(), ")");
} else
str.append(')');
System.out.println(str);
}
}
}.start();
Thread.sleep(2000);
}
输出为:
100
constructor : A$1()
这是您的程序在我的系统上输出的内容:
100
constructor : A$1()
因此,构造函数在那里。但是,它是无参数的。从反汇编来看,发生的事情是编译器发现它不需要传递x
给run()
它,因为它的值在编译时就知道了。
如果我这样更改代码:
public class A {
public static void test(final int x) throws InterruptedException {
new Thread() {
public void run() {
System.out.println(x);
for (Constructor<?> cons : this.getClass()
.getDeclaredConstructors()) {
StringBuilder str = new StringBuilder();
str.append("constructor : ").append(cons.getName())
.append("(");
for (Class<?> param : cons.getParameterTypes()) {
str.append(param.getSimpleName()).append(", ");
}
if (str.charAt(str.length() - 1) == ' ') {
str.replace(str.length() - 2, str.length(), ")");
} else
str.append(')');
System.out.println(str);
}
}
}.start();
Thread.sleep(2000);
}
public static void main(String[] args) throws InterruptedException {
test(100);
}
}
现在生成的构造函数为:
constructor : A$1(int)
唯一的参数是的值x
。
问题内容: 我有一个包含13个不同列名的数据框,我将这些标题分为两个列表。我现在想对每个列表执行不同的操作。 是否可以将列名作为变量传递给pandas?目前,我的代码可以在列表中循环,但是我在尝试将列名传递给函数时遇到了麻烦 码 问题答案: 我认为您可以使用创建自 : 也许更好,因为是,这是由创建:
问题内容: 我有Google地图提供的JavaScript值,需要将其保存在MySQL数据库中。 其实我有变量 我需要将该变量传递给PHP变量lugar 问题答案: 如果要在页面转换时进行操作,则可以通过表单或在URL中传递它,然后仅使用或接收变量。 如果您需要无缝完成它,那么您可能需要考虑使用AJAX。
问题内容: 我有一个PHP会话变量,在整个会话过程中仍然有效。在开头部分,我包含了我的JavaScript文件。 如果需要以下内容,如何将会话变量传递到JavaScript文件中。 由于无法在JavaScript文件中识别出,因此上面的代码不起作用。因此,我必须放入PHP文件本身,但是如何将其保留在JavaScript文件中? 问题答案: 在您的PHP文件中,您可以将用户设置为全局变量: 在包含外
问题内容: 如果我有一个指令,我可以这样调用它 我该如何访问?我在函数中使用时会得到实际的字符串。当我检查html时,实际上说。 问题答案: 尝试 然后 演示:柱塞
问题内容: 例如,如果我有一个变量,并且在主线程中声明了一个runnable,并且想将x传递给该runnable的方法,则必须对其进行声明。为什么? 问题答案: 因为如果能够更改它们,可能会导致很多问题,请考虑以下事项: 这是一个粗略的示例,但您可以看到可能发生许多无法解释的错误。这就是变量必须为最终变量的原因。这是解决上述问题的简单方法: 如果您需要更完整的说明,则有点像同步。Java希望防止您
问题内容: 如何在不刷新页面的情况下将变量从jQuery传递到PHP?当我单击一个复选框时,我想将一个变量从jQuery传递到PHP。我也在使用formdialog。 我的PHP代码 我的JavaScript代码 问题答案: Ajax可以做到这一点。谷歌它,并检查api.jquery.com并查看ajax函数,.ajax(),.post(),.get(),.load()等。 关于您的特定问题,这是