小编gen*_*ive的帖子

Java中的通用类型内部类

我已经学习并试验了Java Generics一段时间,但我遇到了一些我无法解释的问题.以下面的代码为例:

public class Question {
    public <T> Sub<T> getSub(Class<T> c) {
        return new Sub<T>(c);
    }
    public class Sub<S> {
        private Class<S> c;
        public Sub(Class<S> c) {
            this.c = c;
        }
        public void add(S s) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和测试代码:

import generics.Question.Sub;

public class Answer {
    public static void main(String [] args) {
        Question q = new Question();
        Sub<String> s = q.getSub(String.class);
        s.add("");
    }
}
Run Code Online (Sandbox Code Playgroud)

当它运行时,它会给出一个非常神秘的错误消息:

C:\Answer.java:8: incompatible types
found   : generics.Question.Sub<java.lang.String>
required: generics.Question.Sub<java.lang.String>
        Sub<String> s = q.getSub(String.class);
1 error …
Run Code Online (Sandbox Code Playgroud)

java generics netbeans

15
推荐指数
1
解决办法
3028
查看次数

标签 统计

generics ×1

java ×1

netbeans ×1