假设以下类:
class A {
public static final String someString = "thisIsSomeString";
// then potentially lots of non static members and functions.
}
class B {
void foo1() {
String someStringFromA = A.someString;
}
// OR
void foo2() {
String someStringFromA = "thisIsSomeString";
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,b.foo可以是foo1或者foo2.好处foo1很简单:只需要一个地方来定义字符串名称,如果我们需要更改它,只需在此更改即可.但我被告知使用foo1将某种方式"导入"A的代码到B中,这样编译后的B类可能会使用foo1而不是代替foo2.这是真的?我假设使用foo1相当于C#define.
实际上两者都会导致不断内联,B.class所以没有区别.通常,选择更易阅读/可维护的选项.
这是我得到的bytcode:
void foo1();
Code:
0: ldc #3 // String thisIsSomeString
2: astore_1
3: return
void foo2();
Code:
0: ldc #3 // String thisIsSomeString
2: astore_1
3: return
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |