java1.8 推出了一種::的語法 用法 身邊 基本沒人用1.8的新API 目前 我也是只處於學習 運用 階段 有點 知其然不知其所以然 通過后面的學習,及時查漏補缺
一個類中 有 靜態方法 ,非靜態方法,構造方法
- :: 操作靜態方法
package lambda; /** * @author 作者:cb * @version 創建時間:2019年1月3日 下午4:07:01 * */ public class User { static void getName(String s) { System.out.println("該用戶的名字:" + s); } }
public static void main(String[] args) { Consumer<String> consumer = User::getName; consumer.accept("consumer"); }
User::getName 其中 getName 是 一個static 方法 所以 可以 直接使用:: ::表示方法 推導 User::getName 必須要有一個 function的返回值,該返回值 可以 是自己定義 也可以使用java1.8 的 帶的接口 如果是自己定義接口 則可以這樣:
package lambda;/**
* @author 作者:cb
* @version 創建時間:2019年1月3日 下午4:11:30
*
*/
@FunctionalInterface
public interface UserInterfce<F> {void convert(F form);
}
這里 既然 既然 已經幫我們提供了接口 沒有必要的話 直接 用 就可以了。。當然 也可以 自己 定義一個 funcationinterface 的接口 - ::操作 構造方法
package lambda; /** * @author 作者:cb * @version 創建時間:2019年1月3日 下午4:07:01 * */ public class User { static void getName(String s) { System.out.println("該用戶的名字:" + s); } public User() { System.out.println("無參構造器"); } public User(String str) { System.out.println("有參" + str); } }
package lambda; import java.util.function.Consumer; import java.util.function.Supplier; import com.google.common.base.Function; /** * @author 作者:cb * @version 創建時間:2019年1月3日 下午4:09:43 * */ public class SomethingTest { public static void main(String[] args) { Consumer<String> consumer = User::getName; consumer.accept("consumer"); UserInterfce<String> userInterfce = User::getName; userInterfce.convert("自定義fancation"); Function<String, User> function = User::new; User apply = function.apply("構造器"); }
上次說過 Function<T,R> 接受一個 T 參數 返回一個 R 參數,所以 可以用作有參構造函數的調用 如果 想調用無參構造函數 則 可以使用 :
Supplier<User> supplier = User::new;
User user = supplier.get(); - ::調用 實例方法,其實 調用實例方法 個人覺得沒有必要這樣搞了
User user1=new User(); Consumer<String> consumer1= user1::disName; consumer1.accept("實例方法調用");
- 1.8里面的API 其實還是挺多的,我沒有一個個去看完嘗試完,但是 應該是能舉一反三的,只要會用 理解了 只是 換個需求 換個參數,學習 一定要活學活用