More Related Content Similar to 第8回ファントムタイプ勉強会xtendとgwt Similar to 第8回ファントムタイプ勉強会xtendとgwt (14) 第8回ファントムタイプ勉強会xtendとgwt6. Xtend - プロパティ
Java::
public class Hoge {
private String name;
public String getName() {return name;}
public void setName(String name) {this.name = name;}
}
public class Client {
public void hoge() {
Hoge hoge = new Hoge();
hoge.setName("hoge");
System.out.println(hoge.getName());
}
}
Xtend::
class Hoge {
@Property String name;
}
class Client {
def hoge() {
val hoge = new Hoge()
hoge.name = "hoge"
println(hoge.name)
}
}
7. Xtend 拡張メソッド
"hello".toFirstUpper() // calls StringExtensions.toFirstUpper("hello")
persistenceManager.save(myObject); -> myObject.save
1. class MyClass {
2. def doSomething(Object obj) {
3. // do something with obj
4. }
5.
6. def extensionCall(Object obj) {
7. obj.doSomething() // calls this.doSomething(obj)
8. }
9. }
標準ライブラリ
ローカル拡張
DSL的な書き方をするのに使える
9. Xtend - 演算子オーバーロード
val x = 2.71BD
1. val y = 3.14BD
2. val sum = x + y // calls BigDecimalExtension.operator_plus(x,y)
e1 += e2 e1.operator_add(e2)
e1 -= e2 e1.operator_remove(e2)
e1 || e2 e1.operator_or(e2)
http://www.eclipse.org/xtend/documentation.html#operators
使用可能な演算子は上記のURLを参照
一例
10. Xtend - ラムダ式
Java::
1. final JTextField textField = new JTextField();
2. textField.addActionListener(new ActionListener() {
3. @Override
4. public void actionPerformed(ActionEvent e) {
5. textField.setText("Something happened!");
6. }
7. });
Xtend::
1. textField.addActionListener [
2. textField.text = "Something happened!"
3. ]
SAMのinterfaceだったら型推論してくれる
そうじゃなかったらアダプターを書く必要がある
(GWTのAsyncCallBackとか)
14. GWT早わかり
• Java to JavaScriptのためのツールキット
• コンパイラ
• Widget
• クライアントブラウザごとに最適化
したjsを出力してくれる
• ターゲットはJVMではなくJava
16. Who use GWT ?
• Wave(co-meeting)
• adwords
• Google Apps Console
• Api Console
• Api Explorer
• URL Shortener
• Wallet
• Evernote