在JAVA 8有新的語言特性出現,原本在interface都只限定宣告方法,不能有具體的實作。 但是現在已經可以在interfcace中實作方法,分別是static method與default method。 public interface NewFeature { static void produce() { System.out.println("N&F Vehicles"); } public default void linux() { System.out.println("LINUX"); } void botherm(); } public class App { public static void main(String[] args) { NewFeature.produce(); //直接使用 interface 的 static method new NewFeature() { //匿名內部類別寫法 @Override public void linux() { //覆寫 interface 的 default method, 此時不需再加上 default //因為只有一般類別才能建立實體, 因此一般類繼承了 interface 時, 覆寫 default method // 也不用加上 default, 反之界面繼承界面若要覆寫 default method時, 必需要加上 default System.out.println("new linux"); } @Override public void botherm() {} //直接在匿名類別裡實作界面方法 }.linux(); NewFeature intfaceInstance = new NewFeature() { //匿名內部類別寫法 @Override public void botherm() { System.out.println("匿名內部類別"); }}; intfaceInstance.lin...
json syntax: {"name":"Andy"} java class: public class JsonModel { private String name; public void setName(String s) { this.name = s; } public String getName() { return this.name; } } 在java裡創建一個class, 用來接上面的json, 使之成為一個object供程式直接來使用, 這個過程稱反序列化 如果現在把上面那段json轉成java object時, 可用下面方式, 不用加任何Jackson annonation ObjectMapper jsonOmp = new ObjectMapper(); jsonOmp.readValue([json_string_source], JsonModel.class); 重點來了, json syntax中的name, 對於有些人來說, name與Name的意思是相同的, 但是這在做反序列化可行不通 若要兩者都可以吃下來, 則在class要多加annonation和method 例如: public class JsonModel { private String name; public void setName(String s) { this.name = s; } public String getName() { return this.name; } } 如果原本就是接受json name屬性是小寫, 突然有一天, 全部都要改大寫的話, 就直接在java class 屬性加上 @JsonProperties("Name") 如此一來, 就只能接受開頭大寫