探讨 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());
    }
}

 

欢迎指正与讨论.



posted @ 2018-01-19 12:59  三目鸟  阅读(1801)  评论(0编辑  收藏  举报