【java – 有没有办法通过使用泛型来避免instanceof?】教程文章相关的互联网学习教程文章

java – 在运行时访问泛型类型参数?【代码】

事件调度程序接口public interface EventDispatcher {<T> EventListener<T> addEventListener(EventListener<T> l);<T> void removeEventListener(EventListener<T> l); }履行public class DefaultEventDispatcher implements EventDispatcher {@SuppressWarnings("unchecked") private Map<Class, Set<EventListener>> listeners = new HashMap<Class, Set<EventListener>>();public void addSupportedEvent(Class eventType) {li...

在Java中,泛型是不变的?【代码】

编译以下代码失败:public static void swap(List<?> list, int i, int j) {list.set(i, list.set(j, list.get(i))); }喜欢:Swap.java:5: set(int,capture#282 of ?) in List<capture#282 of ?> cannot be applied to (int,Object)list.set(i, list.set(j, list.get(i)));但如果我这样做:public static void swap(List<?> list, int i, int j) {swapHelper(list, i, j); }private static <E> void swapHelper(List<E> list, int ...

java – 如何学习泛型类的实际类型参数?【代码】

参见英文答案 > Get generic type of class at runtime 23个我有一个参数化类:class ParameterizedClass<T extends AbstractSomething> { }电话:new ParameterizedClass<Something>();那么如何通过使用Java Generics获得实际类型的T?解决方法:它可以完成,但type erasure可以使它变得非常困难.正如其他答案所讨论的那样,您要么必须创建ParameterizedClass的子类,要么将类型为T的字段添加到Pa...

java – 使用泛型类型和通用字段名称的GSON反序列化【代码】

假设我们有这样的结构: JSON:{"body": {"cats": [{"cat": {"id": 1,"title": "cat1"}},{"cat": {"id": 2,"title": "cat2"}}]} }和相应的POJO: Response.class 私人最终身体; Body.class 私人最终收藏< CatWrapper>猫 CatWrapper.class 私人决赛猫猫 Cat.classprivate final int id; private final String title;但是,现在我们说我们有相同的结构,但我们收到卡车而不是Cat{"body": {"trucks": [{"truck": {"id": 1,"engine": "bi...

Java中的泛型

我需要一个关于java中的泛型的教程,Oracle网站上的tutorial documents非常令人困惑,任何人都可以提供一些关于泛型的资源吗?解决方法:我建议使用关于泛型的官方Java教程:Lesson: Generics.它提供了一个非常温和的介绍,并附有示例. Angelika Langer也保持着相当不错的FAQ.

java – 泛型,方法签名,赋值【代码】

我以为我理解这一点但显然不是…… 我有这样的方法签名: void doSomething(List< TypeA> typeAs){…} 列表与LT;类型A&LT&的TypeB GT;&GT getTypeBTypeAs(){…} 但如果我试着打电话 doSomething的(getTypeBTypeAs()); 我收到一个编译错误:“类型…中的方法doSomething(List)不适用于参数(List>)” 但是,如果我改变doSomething的签名 void doSomething(List< TypeA<?>> typeAs){…} 它仍然不起作用,但是 void doSomething(List ty...

如何在Java中创建泛型方法?【代码】

我有以下方法:public static void update(String name) {CustomTextType obj = findByName(name);... }我想使它成为一种通用方法,这样我就不需要为每个新的自定义类型编写新代码.我可以这样做,这需要在调用update()之前实例化对象:public static void update(String name, Object obj) {obj = findByName(name);... }出于好奇,我想知道是否有办法使用Java Generics做到这一点:// note: this is an example and does not work pu...

java – 原始类型.应参数化对泛型类型的引用【代码】

我有一个Cage类:public class Cage<T extends Animal> { // the construtor takes in an integer as an explicit parameter ... }我试图在另一个类main方法中实例化Cage的对象:private Cage cage5 = new Cage(5);我得到错误:Cage是原始类型.应参数化对泛型类型Cage的引用.我尝试了几个想法,但我对这种棘手的语法感到困惑:o(解决方法:笼&LT T&GT是一个泛型类型,所以你需要指定一个类型参数,就像这样(假设有一个类Dog extends An...

Java嵌套通配符泛型将无法编译【代码】

我在Java泛型中遇到了有界嵌套通配符的问题. 这是一个常见的案例:public void doSomething(Set<? extends Number> set) {}public void callDoSomething() {Set<Integer> set = new HashSet<Integer>();doSomething(set); }这是标准的Java泛型,工作正常. 但是,如果通配符变为嵌套,则它不再起作用:public void doSomething(Map<String, Set<? extends Number>> map) {}public void callDoSomething() {Map<String, Set<Integer>> m...

java – 点运算符`.`(在泛型参数之前)是什么意思?【代码】

我今天看到这个代码:ImmutableMap<Class<? extends ClientCommand>, CommandProcessorInterface> immutableMap =ImmutableMap.<Class<? extends ClientCommand>, CommandProcessorInterface>of(...这个语法是什么意思? ImmutableMap.< Class ..我知道仿制药就在课堂名称之后.没有?有什么区别:ImmutableMap< Class ..和ImmutableMap.< Class ..解决方法:这意味着您正在调用一个在ImmutableMap类中调用的泛型静态方法. 它与您调...

Java泛型“捕获?”【代码】

我正在使用TreeTable,在更换单元工厂时,我需要通过一个Callback<TreeTableColumn<A, capture of ?>, TreeTableCell<A, capture of ?>>A是我正在使用的课程,但我不知道如何处理“捕获?” 我试图创造new Callback<TreeTableColumn<A, ?>, TreeTableCell<A, ?>>但IDEA显示出警告setCellFactory(Callback<TreeTableColumn<A, capture<?>>, TreeTableCell<A, capture<?>>>) in TreeTableColumn cannot be applied to (anonymous Callba...

java – 使用泛型返回对象子类【代码】

使用抽象类,我想定义一个为子类返回“this”的方法:public abstract class Foo {...public <T extends Foo> T eat(String eatCake) {...return this;} } public class CakeEater extends Foo {}我希望能够做到这样的事情:CakeEater phil = new CakeEater(); phil.eat("wacky cake").eat("chocolate cake").eat("banana bread");可以说香蕉面包会抛出IllegalArgumentException并显示消息“Not a cake!”解决方法: public abstra...

java – 我应该何时使用泛型来定义类型之间的关系?【代码】

在这里使用泛型时会产生一些混乱.我看了Java Generics?,但仍有几个问题. 说我有:public class Honda implements ICar(){ }public class Opel implements ICar(){ }我应该使用:public class Person{ICar car;..public Person (ICar c){car = c;} }要么public class Person<T extends ICar>{T car;..public Person(T c){car = c;} }还是取决于执行的任务? 泛型仅用于聚合关系(容器等);那么,它们只是用于收藏吗?解决方法:一个人通...

java – 使用泛型克隆【代码】

曾几何时有一堂课:public class Scope<C extends Cloneable & Comparable<C>> implements Comparable<Scope<C>>, Cloneable, Serializable {private C starts;private C ends;...@SuppressWarnings("unchecked")@Overridepublic Object clone() {Scope<C> scope;try {scope = (Scope<C>) super.clone();scope.setStarts((C) starts.clone()); // The method clone() from the type Object is not visiblescope.setEnds((C) ends.c...

java泛型方法

你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数,根据传递给泛型方法的参数类型,编译器适当的处理每一个方法调用 定义泛型方法的规则:所有泛型方法都有一个类型参数声明部分(由尖括号分割),该类型参数声明部分在方法返回类型之前 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号分隔 参数类型能被用来声明返回值类型,声明参数类型 注意参数类型只能代表引用类型(Integer, Double, String),不能...