2011-07-06 72 views
10

假設我有一個Java inteface如何在scala中匿名實現Java接口?

public interface Bar { 

    public void baz(String st) 
    public void jaz() 
} 

我想在一階函數體內匿名實現上面的接口,如:

def foo() = { 
val bar : Bar = new Bar() { 
// how to do that ? 


} 

} 

回答

8

如果讓我來,我會寫如:

val bar = new Bar { 
    def baz(st: String): Unit = { 
    // method impl 
    } 

    def jaz(): Unit = { 
    // method impl 
    } 
} 

雖然我的偏好是爲了避免副作用的方法儘可能可能的是,它們不能很好地與函數式編程一起玩

6
val bar = new Bar { 
    def baz(st: String) { 
    // method impl 
    } 

    def jaz() { 
    // method impl 
    } 
}