探討 java中 接口和對象的關系


接口是對象么?接口可以有對象么?
這個問題要跟類比對着,或許更好理解;
類是對象的模版.接口不是類,所以:接口肯定不是對象的模版.
那接口跟對象有什么樣的關系?還是得從類入手;
因為類實現了接口,所以可以說,接口是對象的一個標記.

比如:
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());
    }
}

 

歡迎指正與討論.




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM