Java8正式リリース!
いつの間にやらリリースされていた(´・ω・`)
定番のやつでも・・・
public class HelloWorld { public static void main(String[] args) { Stream.of("Hello", " " ,"World!").forEach(System.out::print); } }
他の言語で実装されているものがやっときたーって感じで、あんまり新鮮味が・・・
Javaでデータキャッシュ
Javaで固定サイズのキャッシュを作るサンプル。
public class Main { /** * キャッシュ */ private Map<Integer, String> cache = new LinkedHashMap<Integer, String>(){ @Override protected boolean removeEldestEntry(Map.Entry<Integer, String> eldest) { // 30件までキャッシュ return size() > 10; } }; /** * テスト */ private void some() { // データを30件設定 for (int i=0; i< 10; i++) { cache.put(i, String.valueOf(i)); } System.out.println(cache); //{0=0, 1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8, 9=9} cache.put(10, "10"); System.out.println(cache); //{1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8, 9=9, 10=10} } public static void main(String[] args) { new Main().some(); } }
GroovyのOwner、this、delegateについて
[groovy]いまいち使い方がわからなかったので、テストコードで試してみた。
/** * クロージャの実行順序確認 */ class Sample1 { static main(args) { // クラスBのインスタンス作成 def b = new B() // クラスAのクロージャを設定 b.c = new A().c def bb = b.c() // デリゲート設定 bb.delegate = b // クロージャ実行 bb() } static class A { // クロージャを返すクロージャ def c = { def hello = { println "Hello A1'" } return { println owner println "this =$this" println "delegate=$delegate" hello() } } def hello() { println "Hello A1" } } static class B { // クロージャ def c def hello() { println "Hello B1" } } }
実行すると、「"Hello A1'"」が表示される。
↓
メソッドの探索順はowner⇒this⇒delegateの順
すっきり~