【Java自学-泛型 泛型转型】教程文章相关的互联网学习教程文章

think in java 泛型

曾几何时,我们对java的泛型充满了好奇,但是感觉用起来有很爽,但又会在spring类型泛型的地方,遇到问题。 我第一次的遇到泛型是在使用别人的BaseDao的时候,这是一个java封装hibernate框架的操作数据库的工具。但我使用 的时候,只需要简单指定我需要数据库操作的类即可,非常方便,但是当我使用spring,想要对泛型的BaseDao<B>使用 @Autowired,根据类型注入的时候,spring却给我找到了一个错,我觉得很奇怪,在我看来BaseDao就...

java – 是否可以绑定嵌套泛型?【代码】

是否可以将嵌套的泛型/捕获绑定在一起? 我经常遇到将类的Map查找到所述类的泛化项的问题.具体来说,我想要这样的东西(不,T没有在任何地方声明).private Map<Class<T>, ServiceLoader<T>> loaders = Maps.newHashMap();简而言之,我希望loaders.put / get具有类似这样的语义:<T> ServiceLoader<T> get(Class<T> klass) {...} <T> void put(Class<T> klass, ServiceLoader<T> loader) {...}以下是我能做的最好的事情吗?在某个地方,我...

java – 为什么封闭类不包含在内部类构造函数的泛型参数中?【代码】

import java.lang.reflect.*; import java.util.Arrays;class Test {class Inner {public <T> Inner(T arg) {}}public static void main(String[] args) {Constructor<?> constructor = Test.Inner.class.getConstructors( )[0];System.out.println("Regular parameters: " +Arrays.toString(constructor.getParameterTypes()) +"\nGeneric parameters: " +Arrays.toString(constructor.getGenericParameterTypes()));} }运行此打印...

JAVA泛型学习笔记【图】

JAVA泛型学习笔记 泛型的作用 1)将运行时错误提前到编译时候发现 2)减少强制转换 举例说明1 可以看到实现了提前发现错误的功能 举例说明2可以看到实现了减少强制转换的功能 泛型类构造函数的定义泛型方法不可以使用这样的调用方式:<Integer>print(integers); 受限的泛型类型原始类型原始类型不安全 通配泛型也就是说 <?>==<? extends object>!=<object>消除泛型 泛型在运行时是不存在的,编译时如果编译器发现错误就会报错,如果...

如何在Java中使用“循环”泛型?【代码】

编译包含一些泛型的以下代码时出错:public abstract class State<T extends HasAState<? extends State<T>>>{protected T parent;public void setParent(){ // It's been simplified for the sake of the question!parent.removeState(this); // Error here!this.parent = parent;parent.addState(this); // Error here!} }public interface HasAState<T extends State<? extends HasAState<T>>> {public void addState(T stat...

java – 在超类方法中返回泛型超类的子类【代码】

我是来自PHP背景的Java新手,很抱歉,如果这很明显的话.我正在尝试实现二叉树类,我已经创建了一个ADT,如下所示:public abstract class BTree<T> {private T value;private BTree<T> leftChild;private BTree<T> rightChild;private BTree<T> parent;public BTree<T> getLeftChild() { return this.leftChild; }.... } 然后我有另一个类扩展这样的类:public class BIntTree extends BTree<Integer> { }但是我希望能够在BIntTree中有...

java – 在非集合中使用泛型

今天看到几个类似的问题 – 让我思考: 什么时候使用泛型的规则是什么? >涉及集合时?>当有getter方法返回集合元素时?>对象在其生命周期内是否更改类型?>关系是否是课堂的组合/聚合? 对于您应该问自己以确定是否应该使用泛型的问题似乎没有达成共识.这纯粹是一个自以为是的决定吗? 你不应该使用泛型时更容易问?解决方法:在我回到你的子弹列表的第一点之前,让我先谈谈关于泛型和类型信息的一些一般性观点. 泛型可以防止不必要...

Java – 如何在覆盖泛型类型的接口方法时获取具体参数类型【代码】

我是一个仿制药新手,我无法找到实现这一目标的最佳方法.如果我做了明显错误的事,请随时指出.interface Node<T> {void addOne(Node<T> node); }class StringNode implements Node<String> {List<StringNode> data = new ArrayList<>();/*** {@inheritDoc}*/@Overridepublic void addOne(Node<String> node) {StringNode stringNode = (StringNode) node;data.add(stringNode);}}我希望通过让函数本身具有签名public void addOne(Str...

java – 在接口中使用泛型【代码】

我有一个问题,关于界面中正确的方法签名是什么,以及为什么.我的事件用类型参数化,但是如果接口也具有< T>.在方法签名中使用它?如果是这样,为什么不呢?public interface MyListener {void beforeAction(final MyEvent event); }和public class MyEvent<T> extends EventObject {// code }解决方法:如果使用类型对MyEvent进行参数化,则需要将MyListener指定为其中之一public interface MyListener<T> {void beforeAction(final MyE...

java – 捕获特定异常比捕获泛型异常更便宜吗?【代码】

假设我正在将一个位图加载到我的Android设备上.可以抛出许多可能的异常.为简单起见,我们采用NullPointerException和OutOfMemoryError. 现在我有两段代码. 代码1try{ //load the bitmap } catch(Exception e) { //do something }代码2try{ //load the bitmap catch (NullPointerException e) { //do something } catch(OutOfMemoryError e) { //do something else }一段代码比其他性能更有效吗?如果是这样,为什么?解决方法:从字节...

java – 如何在泛型中实现null对象模式?【代码】

我喜欢null object pattern的想法并强迫我使用它直到它真的感觉正常和好.目前我没有看到如何在泛型类型中使用它.我知道定义第二个泛型类型并传入类来构造一个默认对象的可能性,但这对于这个模式来说真的太多了.有好办法吗?public class GenericExample<T> {public static final GenericExample NULL = ???;private T attribute;public GenericExample(T attribute) {this.attribute = attribute;} }public class HoldGeneric {pri...

java – 使用通配符调用泛型方法无法编译【代码】

有人可以解释为什么以下代码fragmnent不编译?public class Main {public static void main(String[] args) {Integer[] integers = {3, 5, 8};Set<Integer> s1 = new HashSet<Integer>(Arrays.asList(integers));Double[] doubles = {3.5, 5.5, 8.5};Set<Double> s2 = new HashSet<Double>(Arrays.asList(doubles));Set<Number> res1 = union(s1, s1); // ->it does not compile Set<Number> res2 = union(s1, s2); //...

Java中泛型的静态多态性【代码】

我希望创建一些干净的代码,可以递归地挖掘集合并打印它找到的第一个Integer.来自C背景的方法看起来像这样:class Test { static void print(Integer i) {System.out.println(i); }static <T> void print(ArrayList<T> arr) {T entry= arr.at(0);Test.print (entry); }static void Test() {ArrayList<ArrayList<Integer>> arrayOfArrayOfInt= create();print( arrayOfArrayOfInt ); } }不幸的是,这不起作用. 一种替代方法是放弃静态...

关于泛型函数的泛型错误语法Java 1.7【代码】

使用Java 1.7编译器,值得注意的是,调用泛型函数所接受的语法非常特殊.它会强制您使用它来引用泛型函数. 例如,对于定义为的函数:private <T> Object genericFunction(T t){//function code }在引用它时,以下内容给出了语法错误:Object o = <ClassName>genericFunction(ClassName t);虽然接受以下内容:Object o = this.<ClassName>genericFunction(ClassName t);为什么会这样?它不应该采取它们两个?解决方法:它是Java Language ...

java – 创建一个泛型类的枚举集【代码】

当我没有通用枚举的运行时类型时,如何创建空EnumSet?示例代码:public class Utility<T extends Enum<T>> {private T[] enumConstants;public Utility(Class<T> e) {enumConstants = e.getEnumConstants();}private EnumSet<T> emptyEnumSet() {// ?} }这是我目前的解决方法,我认为它有点笨拙:private EnumSet<T> emptyEnumSet() {T first = enumConstants[0];EnumSet<T> result = EnumSet.of(first);result.remove(first);retur...