开发者社区> 问答> 正文

Java接口内定义泛型方法如何实现

先举个例子:
接口 IHuman.java
screenshot
实现 MaleHuman.java
screenshot
按照以上接口内的泛型方法,能进行子类实现也不会报错。
但是接口内的泛型方法换种写法,就不知道如何写实现了。
接口 IHuman.java (改)
screenshot
请问按上述接口内的泛型方法,如何写 MaleHuman.java 这个实现类。

展开
收起
蛮大人123 2016-02-25 17:34:04 4415 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    interface Info24<T> { // 在接口上定义泛型  
        public T getVar(); // 定义抽象方法,抽象方法的返回值就是泛型类型  
    }  
      
    class InfoImp24<T> implements Info24<T> { // 定义泛型接口的子类  
        private T var; // 定义属性  
     
        public InfoImp24(T var) { // 通过构造方法设置属性内容  
           this.setVar(var);  
        }  
     
        public void setVar(T var) {  
            this.var = var;  
        }  
      
        public T getVar() {  
           return this.var;  
        }  
    }  
      
    public class GenericsDemo24 {  
        public static void main(String arsg[]) {  
           Info24<String> i = null; // 声明接口对象  
            i = new InfoImp24<String>("it"); // 通过子类实例化对象  
            System.out.println("Length Of String : " + i.getVar().length());  
        }  
    }  
    
    // Java泛型接口  
    interface Info25<T> { // 在接口上定义泛型  
        public T getVar(); // 定义抽象方法,抽象方法的返回值就是泛型类型  
    }  
     
    class InfoImp25 implements Info25<String> { // 定义泛型接口的子类  
        private String var; // 定义属性  
     
        public InfoImp25(String var) { // 通过构造方法设置属性内容  
            this.setVar(var);  
        }  
     
        public void setVar(String var) {  
            this.var = var;  
        }  
      
        public String getVar() {  
            return this.var;  
        }  
    }  
      
    public class GenericsDemo25 {  
        // 该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。  
        /* 
        * @description "deprecation" 使用了不赞成使用的类或方法时的警告 
         *  
        * @description "unchecked" 执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 
         * 来指定集合保存的类型。 
         *  
         * @description "fallthrough" 当 Switch 程序块直接通往下一种情况而没有 Break 时的警告。 
         *  
         * @description "path" 在类路径、源文件路径等中有不存在的路径时的警告。 
         *  
         * @description "serial" 当在可序列化的类上缺少 serialVersionUID 定义时的警告。 
         *  
         * @description "finally" 任何 finally 子句不能正常完成时的警告。 
         *  
         * @description "all" 关于以上所有情况的警告。 
         */  
        @SuppressWarnings("unchecked")  
        public static void main(String arsg[]) {  
            Info25 i = null; // 声明接口对象  
           i = new InfoImp25("it"); // 通过子类实例化对象  
            System.out.println("Length Of String : "  
                   + i.getVar().toString().length());  
       }  
    }  
    2019-07-17 18:47:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载