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

c# – 如何用Java编写泛型方法【代码】

如何用Java编写泛型方法. 在C#中,我会这样做public static T Resolve<T>(){return (T) new object();}什么是Java中的等价物?解决方法:首先,你的C#示例是错误的;除非typeof(T)== typeof(object),否则它将抛出InvalidCastException.您可以通过添加constraint来修复它:public static T Resolve<T>() where T : new() {return new T(); }现在,这将是Java中的等效语法(或者,至少,尽可能接近):public static <T> T Resolve() {return ...

java – 对数组使用泛型【代码】

是否可以将泛型用于数组?解决方法:数组已经是基本对象类型,也就是说它们不是描述其他对象(如ArrayList或HashMap)集合的类. 您也不能拥有一系列通用类型.以下内容在Java中是非法的:List<String>[] lists = new List<String>[ 10 ];这是因为编译器必须正确地键入数组,并且由于Java的泛型受到类型擦除的影响,因此无法以这种方式满足编译器.

Java泛型【代码】

原文链接:http://www.cnblogs.com/cnforest/archive/2012/04/26/2471376.htmljava里同样也有范型的概念,我们可以自定义范型类、范型接口、范型内部类和范型方法等: class MyGeneric<T> { public T value; } class MyOtherGeneric<A, B> { void f(A a, B b) {} } interface MyGenericInterface<T> { T getT(); } class NormalOuter { class GenericInner<T> {} public <T> void GenericMethod(T value) {} } 注意范型不...

java – 如何创建泛型类型的新对象?【代码】

我有这门课:public class A<T> {protected T something = new T();... }当然新的T()是不可能的.我该怎么做? 我不能更改调用此类的构造函数的代码,因为这是通过反射完成的. 另一个问题是如何获取泛型类的Class对象. mymethod(A.class)工作,但现在A得到了参数T.解决方法:您可以接收T作为构造函数的参数:protected T something;public A(T something) {this.something = something; }或者,如果A的目标是真正创建新的T实例,那么将T的...

java – 使用泛型创建返回较大函数的max函数【代码】

在Java中,我如何使用泛型来创建一个max函数,该函数将两个相同类型的Comparable对象作为参数并返回较大的对象? 我试过了:public static <T extends Comparable> T max(T obj1, T obj2) {return ( ((obj1).compareTo(obj2) >= 0) ? obj1 : obj2); }(如果它们都相等,则返回obj1.) 该方法基于我在http://www.informit.com/articles/article.aspx?p=170176&seqNum=3找到的代码. 但是,当我编译它时,我收到此警告(使用-Xlint:unchecked...

java – 泛型和比较器【代码】

我正在研究泛型,发现以下代码在比较方法时给出了编译时错误.Multiple markers at this line– Cannot infer type argument(s) for comparing(Function)– The type A does not define m1(Object) that is applicable hereclass A<T> {String m1() {return null;} }class B {void test() {Comparator<A<String>> target = Comparator.comparing(A::m1).thenComparing(A::m1);} }有人可以帮助我理解这种行为;我该如何解决这个问题呢...

存储在HashMap中的Java泛型对不能正确检索key-> value【代码】

这是Pair.javaimport java.lang.*; import java.util.*; public class Pair<TYPEA, TYPEB> implements Comparable< Pair<TYPEA, TYPEB> > {protected final TYPEA Key_;protected final TYPEB Value_;public Pair(TYPEA key, TYPEB value) {Key_ = key;Value_ = value;}public TYPEA getKey() {return Key_;}public TYPEB getValue() {return Value_;}public String toString() {System.out.println("in toString()");StringBuf...

Java类的字段可以是多种类型而不使用泛型吗?【代码】

我有一个类,其实例将被序列化.因此,该类实现了Serializable.该类有一个List类型的字段,当然也必须是Serializable.想象一下这个类看起来像这样:import java.io.Serializable; import java.util.List;public class Report implements Serializable {private static final long serialVersionUID = 12345L;private List<Record> records = new ArrayList<>(); }现在我知道ArrayList是Serializable,但我宁愿声明我的字段是某种接口类型...

Java 8类型推断导致在调用时省略泛型类型【代码】

升级到Java 1.8后,我遇到了一个泛型方法的问题,这对于Java 1.6和1.7来说很好请考虑以下代码: public class ExtraSortList<E> extends ArrayList<E> {ExtraSortList(E... elements) {super(Arrays.asList(elements));}public List<E> sortedCopy(Comparator<? super E> c) {List<E> sorted = new ArrayList<E>(this);Collections.sort(sorted, c);return sorted;}public static void main(String[] args) {ExtraSortList<String> s...

java – JPA(Hibernate):在泛型@MappedSuperclass中使用@EmbeddedId时出错【代码】

我目前正在为遗留数据库定义JPA实体(许多复合键,但也包括单列键).我创建了以下实体超类:@MappedSuperclass public abstract class AbstractEntity<ID extends Serializable> {public abstract ID getId();public abstract void setId(ID id); }然后是复合键的超类(以及长主键的超类,此处未列出):@MappedSuperclass public abstract class AbstractEmbeddedIdEntity<ID extends Serializable> extends AbstractEntity<ID> {@Embed...

java – 引用内部泛型类型【代码】

是否有可能提取内部泛型类型? 想象一下以下课程:interface Animal { }class Bear implements Animal { }class AnimalRule<ANIMAL extends Animal> { }class BearRule extends AnimalRule<Bear> { }现在我想为这段代码编写测试,但我希望有一个通用的基础测试类. 我可以这样声明:class AnimalRuleAltTest<ANIMAL extends Animal, RULE extends AnimalRule<ANIMAL>> {RULE rule;ANIMAL animal; }class BearRuleAltTest extends Ani...

java – 添加泛型参数时未选中的强制转换警告【代码】

以下Java代码不会生成未经检查的强制转换警告(使用Eclipse编译器对Java 8进行测试):class Parent<T> {}class Child<T> extends Parent<T> {}class Test {<T> void test() {Parent<T> p = new Child<T>();// cast accepted by compiler:Child<T> cast = (Child<T>)p;} }所以我理解,如果p既是父< T>,那么编译器必须以某种方式得到它. (通过编译时类型)和Child(通过运行时转换),然后可以安全地假设它是Child< T>因为Child在其extends...

Java泛型:如何包装/扩展Android Activity测试用例?【代码】

我试图扩展ActivityInstrumentationTestCase2如下:public abstract class FooActivityTestCase<T extends Activity>extends ActivityInstrumentationTestCase2<Activity> {public FooActivityTestCase(String pckg, Class<Activity> activityClass){super(pckg, activityClass);}public void foo(){ ... } }我尝试像这样扩展FooActivityTestCase:public class SpecificFooTestCaseextends FooActivityTestCase<MyActivity> {publ...

java – 泛型和JSON【代码】

我正在使用Play框架.我想使用函数renderJSON和2个对象作为参数.它似乎不可能,所以我试图创建一个包含2个对象的类.为了不必每次都创建一个新类,我想使用泛型,但它似乎不起作用: 型号:public class JSONContainer<T> extends Model {private T myT;private StatusMessage mySm;public JSONContainer(T myT, StatusMessage mySm) {this.myT = myT;this.mySm = mySm;} }然后 : 在Controller的功能中:JSONContainer<User> myJ = new...

Java子类化问题与泛型类型的自引用类型【代码】

import java.util.*;// Let's define a self-referential type: class SelfReferential<T extends SelfReferential<T>> {}//A complete (i.e. not parameterized) subtype of SelfReferential: class SubclassA extends SelfReferential<SubclassA> {}//A partial (i.e. parameterized) subtype of SelfReferential: class SubclassB<T extends SubclassB<T>> extends SelfReferential<T> {}//Two complete subtypes of SubclassB ...