您的位置:首页 > 编程语言 > Java开发

C# VS JAVA 差异 (未完待续)

2015-12-21 17:15 387 查看
1. 静态构造函数

C#中有静态构造函数, Java中没有静态构造函数。其实Java中有一个类似静态构造函数的东东,称作静态初始化,或者静态代码块,可以通过这样的代码实现相同的功能:

但是Java中静态代码块和C#静态构造函数还是不一样的。C#中静态构造函数在其他静态成员初始化后再执行,而java中静态代码块和其他静态成员谁在先谁就先执行。

public class AskEvent extends EventObject {

private static final long serialVersionUID = 1L;
private Object Evnetsource;
private String name;

public Object getEvnetsource() {
return Evnetsource;
}

public String getName() {
return name;
}

public AskEvent(Object source,String name) {
super(source);
Evnetsource = source;
this.name = name;
}

}

public interface Listener extends EventListener {
public void listen(AskEvent ae);

}

public class Ask {

private Listener l ;
private List<String> names = new ArrayList<String>();

public void addListener(Listener l){
this.l = l;
}

public void addName(String name){
names.add(name);
}

public void setFlag(boolean flag){
if(flag){
if(names.size()==0) System.out.println("Input Name!!!");
for(int i = 0;i<names.size();i++){
l.listen(new AskEvent(this,names.get(i)));
}
names.clear();
}
}

}

public class EventTest {

public static void main(String[] args) {
System.out.println("START");
Scanner scan = new Scanner(System.in);
Ask ask = new Ask();
ask.addListener(new Listener(){
public void listen(AskEvent ae) {
if(ae.getName().equals("a")) System.out.println(ae.getName() + "good man");
else System.out.println(ae.getName() + "bad man");
}
});

while(true){
System.out.print("input name:");
final String name = scan.nextLine();
if(name.equals("exit")) break;
if(name.equals("print")) {
ask.setFlag(true);
continue;
}
ask.addName(name);
}
System.out.println("OVER");
}
}


View Java Code

7Exception

Java中Checked Exception是必须要被try_catch捕获,编译器会强制检查的。在C#中是否捕获Exception并不是由编译器强制的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: