62,614
社区成员
发帖
与我相关
我的任务
分享
public class Static {
private static String fileName;
public Static(String string) {
this.fileName = string;
}
static{
System.out.println(fileName);
}
public static void main(String[] args){
new Static("test"); //输出是null,怎么实现静态块的传参?还是根本没办法实现?
}
}
package csdn;
public class StaticTest {
private static String filename;
StaticTest(String filename){
this.filename = filename;
}
static {
System.out.println("first");
System.out.println(filename);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("second");
new StaticTest("Hello,World");
}
}
运行结果:
first
null
second
是static块里先执行了,即使传了值也打印不出来http://blog.csdn.net/shine333/article/details/65854#comment_item_3945635
[/quote]
您好像很文明你样子http://blog.csdn.net/shine333/article/details/65854#comment_item_3945635
static{
System.out.println(fileName);
}
static{}会在初始化一个class时优先初始化。
可以考虑使用静态方法实现楼主的要求。
static{
System.out.println(fileName);
}
你这段代码在类加载的时候就已经执行了。类加载先行于类使用。
而你这段代码却是在类实例创建的时候执行的,static 变量的值其实赋值成功了,但是这段代码在时间顺序上是不可能早于打印语句的。因此返回永远是null。
new Static("test");