Tag: generics

类型推断:Java 7类型参数

今天我们谈到了Java 7在我们公司的优势。 从Java 7开始,可以定义以下行 Map<String, List> myMap = new HashMap<String, List>(); 如 Map<String, List> myMap = new HashMap(); 我们对上述主题进行了长时间的讨论。 我们中的一些人认为这是类型推断(如C#中的var关键字),并且类型将在运行时计算,其他人认为它只是一种更简单的方式来声明某个变量并且没有推断,因为已知类型在编译时的上下文。 请提供澄清。 技术如何运作? 编辑:官方Oracle文档没有提供有关该文档的精确文档。 http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html

如何创建多个子类级别,以便参数属于子类?

在这个StackOverFlow问题之后,让我们说我想扩展到另一个级别的子类,比如Mallards,我该怎么做? public abstract class Animal <A extends Animal> { public abstract A copyAnimal(A animal); } public class Duck extends Animal { @Override public Duck copyAnimal(Duck duck) { return copyOfDuck; } } class Mallard extends Duck { public Mallard copyAnimal(Mallard mallard) { return copyOfMallard; } } 一切都适用于Duck子类,但它对于Mallard子类来说是失败的。 如何使用未确定数量的子类进行设置?

javagenerics类型参数和对这些类型的操作

在寻找我最近遇到的有趣情况的答案时,我遇到了以下问题: 类型安全,Javagenerics和查询 我写了下面的课(清理了一下) public abstract class BaseDaoImpl extends HibernateDaoSupport implements BaseDao { /** * Finds and Returns a list of persistent objects by a collection of criterions * @param criterions * @return list of persistent objects * @throws DBException */ @SuppressWarnings(“unchecked”) protected List findByCriteria(Collection criterions) throws DBException { try { DetachedCriteria criteria = DetachedCriteria.forClass(T.class); // […]

在Java 5中引入generics的原因

有人能解释一下Java中引入generics的原因吗? 据我所知,它们的介绍使您不会意外地将错误类型的对象添加到集合中。 我有点喜欢收集的generics,但不知道为什么它们也被添加到其他类中。 我见过一些让你的头部疼痛,眼睛流血的通用课程。 那么generics的所有原因是什么(主要是非收集)? TIA!

如何在递归generics类中创建有效对象?

问题 : 我正在树类型数据结构上实现递归add()方法,使用表示树节点的generics类实现。 如果子树是generics类型,如何在该递归中创建子树 – 因此没有我可以调用的构造函数? 情况详情: 我有一个generics类集(下面是一个地图),旨在实现对象的地图(基本上是N级树)的地图的映射。 public interface NodeInterface { public void add(List, ValueType); public ValueType getSubTree(KeyType); // Get subtree map } // Generic map class. // Leaf level nodes are maps too, just not maps containing other maps public abstract class NodeMap implements NodeInterface { protected Map map; // actual map … […]

“T扩展Junk”在Java中的generics类中意味着什么?

我正在试着理解这里有什么表示法, 例如下面的例子 。 我想看看是否有人可以提供额外的代码来帮助我理解这一点。 如何用T扩展垃圾? 这意味着什么? public class Junk { public Junk() { } public T returnType() { return null; //? what would I even return } //what would I do to make sense of this class }

generics编译问题:不兼容的类型

鉴于这个简单的类: import java.util.Collection; public class GenericTest { public Collection getKeys() { return null; } public void copy(GenericTest a_from) { for (String x : a_from.getKeys()) { } } } 我收到以下编译错误,但不明白为什么。 error: incompatible types for (String x : a_from.getKeys()) { required: String found: Object 如果我将参数更改为copy()方法到GenericTest ,则错误消失,但这不是我想要的。 copy()方法对任何类型的GenericTest都有效,而不仅仅是GenericTest 。

覆盖Java中的抽象generics方法

问题大纲 我正在弄清楚我当前项目基础的更好部分,我有一个想法,我决定测试有关覆盖抽象方法。 这是我在Java中的测试类: public abstract class Base { public abstract T test(); } 首次实施: public class Inheritor extends Base { @Override public Inheritor test() { return null; } } 第二次实施: public class Inheritor2 extends Base { @Override public T test() { return null; } } 问题1 为什么要编译? 我承认我很有希望它是合法的,因为它使合同不仅确保它返回一些扩展Base的东西,而且已经更加专业化了(因此我不需要在以后的某个地方将结果转换为我的专业类) )。 一切听起来不错但是我真的履行了基类强迫我的合同吗? 我在Inheritor中的重写实现失去了某些通用层,不是吗? 我在Inheritor中实现此方法并不会返回一个Inheritor2的实例,抽象方法似乎强制执行的可能性(因为它们都扩展了Base )。 我想指出文档中的一些摘录。 我的猜测是它与类型擦除有关,如果有人在他/她的答案中提到它的准确性会很好。 […]

更通用的回报

看一些代码清理,我想知道处理这个问题的最佳方法: 有一个类有一些私有变量,如: myBool1, myBool2, myBool3 myInt1, myInt2, myInt3 myString1, myString2, myString3 执行返回值通用的getter函数的最佳方法是什么? 所以,如果我用以下内容调用getter: myNewBool=.get(“myBool1”) myNewString=.get(“myString2”) myNewInt=.get(“myInt3”) 有人有什么建议吗?

java – 通用返回类型?

我不确定这在Java中是否可行。 此外,我无法弄清楚要在Google上查询的内容。 无论如何,我想要一个方法,将一个参数作为一个Class(接口或类),方法的返回类型是该类的一个实例。 我不想在事后重新制作一个Object。 我不确定这个function是否存在或语法是什么。 假设我有一个名为XYZ的类,这是我的伪方法。 private XYZ createInstance(XYZ.class, other args) { … // create an instance of XYZ with other args named “_xyz_” … return _xyz_; } 现在假设XYZ是某种通用语法。 这在Java中是否可行? 谢谢你的帮助。