zoukankan      html  css  js  c++  java
  • 探讨 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());
        }
    }
    欢迎指正与讨论.



  • 相关阅读:
    .NET中string和StringBuilder的区别
    Hashtable 类
    C#中null和""的区别
    Dictionary 泛型类
    宿主进程含义
    事件和委托
    关于SQLServer中索引使用及维护简介
    什么是序列化
    “锁定”语句(C# 参考)
    栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]
  • 原文地址:https://www.cnblogs.com/sanmubird/p/8316352.html
Copyright © 2011-2022 走看看