接口是對象么?接口可以有對象么?
這個問題要跟類比對着,或許更好理解;
類是對象的模版.接口不是類,所以:接口肯定不是對象的模版.
那接口跟對象有什么樣的關系?還是得從類入手;
因為類實現了接口,所以可以說,接口是對象的一個標記.
比如:
Converter<String, Integer> converter1 = Integer::valueOf;
Integer converted = converter1.convert("123");
System.out.println(converted);
打印結果如下:
123
這里的 converter1 感覺像是一個對象; 那他是哪一個類的對象呢?
Class clazz = converter1.getClass();
System.out.println(clazz.getName());
System.out.println(clazz.getSimpleName());
打印結果如下:
com.sanmubird.jianming.methodAndconstructedFunction.Test$$Lambda$2/990368553
Test$$Lambda$2/990368553
所以: converter1 是匿名內部類的一個對象.
Converter<String, Integer> converter1 = Integer::valueOf; // 這行代碼翻譯一下就是: 標記 converter1 為 一個實現了Converter<String, Integer> 接口的對象 ;
下面上代碼:
Converter接口
package com.sanmubird.jianming.methodAndconstructedFunction.inter; @FunctionalInterface public interface Converter<F,T> { T convert(F from); }
package com.sanmubird.jianming.methodAndconstructedFunction; import com.sanmubird.jianming.methodAndconstructedFunction.inter.Converter; public class Test { public static void main(String[] args) { Converter<String, Integer> converter1 = Integer::valueOf; Integer converted = converter1.convert("123"); System.out.println(converted); Class clazz = converter1.getClass(); System.out.println(clazz.getName()); System.out.println(clazz.getSimpleName()); } }
歡迎指正與討論.