
java中的泛型机制
泛型这种语法机制,只在程序编译阶段起作用,只是给编译器参考的。(运行阶段泛型没用)使用了泛型好处是什么?第一:集合中存储的元素类型统一。第二:从集合中取出的元素类型是泛型指定的类型,不需要进行大量的向下转型。泛型的缺点是什么?导致集合中存储的元素缺乏多样性。代...
2024-01-10
Java泛型T与对象
我想知道以下两个方法声明之间有什么区别:public Object doSomething(Object obj) {....}public <T> T doSomething(T t) {....}有什么可以/可以做的,而不是另一种?我在本网站的其他地方找不到这个问题。回答:与上下文隔离-没有区别。在t和两者上,obj您只能调用的方法Object。但是有上下文-如果您有泛型类:MyCl...
2024-01-10
Java比较泛型类型
在Java中,我编写了一个Binary Search Tree类,该类使用递归添加节点。现在,我想使用泛型对其进行概括,以便我可以了解更多有关它们的信息。public class GBinNode<T> { T item; GBinNode<T> left; GBinNode<T> right;public GBinNode(T newItem) { item = newItem; left = null; right = null; }public GBinNod...
2024-01-10
Java泛型(通配符)
我对Java中的通用通配符有两个疑问:List<? extends T>和之间有什么区别List<? super T>?什么是有界通配符,什么是无界通配符?回答:在你的第一个问题中,<? extends T>并且<? super T>是有界通配符的示例。无限制的通配符看起来像<?>,基本上就是<? extends Object>。宽松地表示泛型可以是任何类型。有界通...
2024-01-10
Java泛型超级关键字
但是,我似乎仍然对super关键字感到迷茫:当我们声明这样的集合时:List<? super Number> list = null;list.add(new Integer(0));//this compileslist.add(new Object());//this doesn't compile不应该相反吗?我们有一个列表,其中包含一些对象(类型未知),它们是的父对象Number。因此Object应该适合(因为它是的父项Number),Inte...
2024-01-10
Java工厂模式与泛型
我希望BallUserInterfaceFactory返回具有适当泛型的用户界面实例。我陷入下面的错误示例中:绑定不匹配:BallUserInterfaceFactory类型的通用方法getBaseballUserInterface(BASEBALL)不适用于参数(BALL)。推断的类型BALL不能有效替代有界参数public class BallUserInterfaceFactory { public static <BALL extends Ball> BallUserInterface<BA...
2024-01-10
Java-泛型与转换对象
我有一堂课 Data<T>具有通用属性private T value;有更好的方法来执行以下操作吗?即以不同的形式返回泛型?public List<String> getValues() { if (value.getClass() != ArrayList.class) throw new Exception("Wrong Enum value '%s'", value); return (ArrayList<String>) value; //ugly}public St...
2024-01-10
泛型类中的Java泛型方法
如果在Java中创建泛型类(该类具有泛型类型参数),则可以使用泛型方法(该方法带有泛型类型参数)吗?考虑以下示例:public class MyClass { public <K> K doSomething(K k){ return k; }}public class MyGenericClass<T> { public <K> K doSomething(K k){ return k; } public <K> List<K> makeSingletonList(K k){ ...
2024-01-10
Java泛型:多个泛型参数?
我想知道是否有可能编写一个接受多种通用类型的函数,如下所示:public int void myfunction(Set<T> a, Set<T> b) { return 5;}Set<Integer> setA = new HashSet<Integer>();Set<String> setB = new HashSet<String>();int result = myfunction(setA, setB);那行得通吗?每个参数中的泛型是否意味着每个参数必须具有与泛型相同的类型T?回答:...
2024-01-10
Java泛型类中的静态方法?
在Java中,我希望具有以下内容:class Clazz<T> { static void doIt(T object) { // shake that booty }}但是我明白了Cannot make a static reference to the non-static type T我对基本用途以外的泛型没有什么了解,因此对此没有多大意义。我无法在互联网上找到有关该主题的很多信息,这无济于事。有人可以通过类似的方...
2024-01-10
Java 如何确定泛型的类?
我正在创建一个通用类,并且需要使用一种方法来了解当前使用的通用类型的Class。原因是我调用的方法之一期望将此作为参数。例:public class MyGenericClass<T> { public void doSomething() { // Snip... // Call to a 3rd party lib T bean = (T)someObject.create(T.class); // Snip... }}显然,上面的示例不起作用,并导...
2024-01-10
具有多个类的Java泛型通配符
我想拥有一个Class对象,但是我想强迫它代表的任何类扩展A类并实现接口B。我可以:Class<? extends ClassA>要么:Class<? extends InterfaceB>但我不能两者都做。有没有办法做到这一点?回答:实际上,你可以做你想做的事。如果要提供多个接口或一个类加接口,则必须使通配符看起来像这样:<T extends Clas...
2024-01-10
泛型方法调用的Java类型提示
我想知道用这样的签名调用静态方法的正确方法是什么:public static <T1, T2> Map<T1, Set<T2>> aggregate(List<Map<String, Object>> list, String colK, String colV) { ...}由于某种原因,我很想这样称呼它:Map<String, Set<Integer>> map = aggregate<String, Integer>(lData, "id", "ref");但是除非我将其更改为:...
2024-01-10
如何在Java中序列化泛型类?
我已经开始阅读有关Java序列化以及其他语言的一些文章,但是如果我有一个通用类并且想要将其实例保存到文件中该怎么办。代码示例public class Generic<T> { private T key; public Generic<T>() { key = null; } public Generic<T>(T key) { this.key = key; }}保存此类对象的最佳方法是什么?(当然,在我真正的复...
2024-01-10
在Java中创建泛型类型的实例?
是否可以在Java中创建泛型类型的实例?我正在根据我所看到的答案进行思考no(由于类型擦除),但是如果有人能看到我所缺少的内容,我将很感兴趣:class SomeContainer<E>{ E createContents() { return what??? }}编辑:事实证明,超级类型令牌可以用于解决我的问题,但是它需要很多基于反射的...
2024-01-10
Java泛型和枚举,模板参数丢失
我的结构相当复杂,无法正常工作。这是我所做的:public interface ResultServiceHolder { <M, ID extends Serializable, BO extends BusinessObject<M, ID>> ResultService<M, ID, BO> getService();}public enum ResultTypes implements ResultServiceHolder { RESULT_TYPE_ONE { @Ove...
2024-01-10
了解上限和下限?在Java泛型中
我真的很难理解通配符参数。我对此有一些疑问。?作为类型参数只能在方法中使用。例如:printAll(MyList<? extends Serializable>)我不能使用?类型参数定义类。 我了解上限?。 printAll(MyList<? extends Serializable>)表示:“ 如果有实现该 接口的 对象, printAll 则将打印。MyList``Serialzable ” 我对有点问题super。print...
2024-01-10
Java中没有泛型参数的泛型方法
在C#中,我实际上可以这样做://This is C#static T SomeMethod<T>() where T:new(){ Console.WriteLine("Typeof T: "+typeof(T)); return new T();}//And call the method hereSomeMethod<SomeClassName>();但是由于某种原因,我无法使其在Java中工作。我要做的是在超类上创建一个静态方法,以便可以将子类转换为XML。//This is Java, but...
2024-01-10
Java泛型中的擦除概念是什么?
Java泛型中的擦除概念是什么?回答:基本上,这是通过编译器技巧在Java中实现泛型的方式。编译后的通用代码实际上只使用java.lang.Object你谈论的任何地方T(或其他一些类型参数),并且有一些元数据告诉编译器它确实是通用类型。当你针对通用类型或方法编译某些代码时,编译器会弄清你的实际意...
2024-01-10
重写Java中具有泛型参数的方法?
我有一个抽象类 ,它由类 子类 。方法:public abstract List<? extends MonitorAccount> performMonitor(List<? extends MonitorAccount> accounts)在 定义,并且必须在 覆盖。我目前在 重写了如下方法:@Overridepublic List<EmailAccount> performMonitor(List<EmailAccount> emailAccounts) { //...unrelat...
2024-01-10
为什么Java泛型不支持基本类型?
为什么Java中的泛型只能用于类,而不能用于原始类型?例如,这可以正常工作:List<Integer> foo = new ArrayList<Integer>();但这是不允许的:List<int> bar = new ArrayList<int>();回答:ava中的泛型是一个完全编译时的结构-编译器将所有泛型使用转换为正确的类型。这是为了保持与以前的JVM运行时的向后兼容性。...
2024-01-10
Java类-如何将泛型对象传递给函数
这是我的基本功能:public static void main(String[] a) throws Exception { Session sessione = HibernateUtil.getSessionFactory().openSession(); Query query = sessione.createSQLQuery("select * from User").addEntity(User.class); List<User> rows = query.list(); ...
2024-01-10
Java泛型为什么我不能实例化泛型类型
我正在使用泛型编写某些东西,令我惊讶的是,我发现这行不通:class foo<T>{ T innerT = new T();}那我不能实例化泛型吗?没有任何方法可以做到这一点吗?回答:是的,这真是令人讨厌。我使用的解决方法是强制客户端在构造新类时传递类foo<T>-即public foo(Class<T> myClass)然后您可以使用myClass.newInstanc...
2024-01-10
Scala Circe与泛型
我正在尝试使用scala json库Circe,将其包装在一个简单的特征中以提供往返于json的转换,我对此具有以下要求:import io.circe.generic.auto._import io.circe.parser._import io.circe.syntax._trait JsonConverter { def toJson[T](t : T) : String def fromJson[T](s: String) : T}case class CirceJsonConverter() ...
2024-01-10
Java泛型:获取泛型方法的返回类型的类
回答:我曾经写过这种方法:private <T> SortedSet<T> createSortedSet() { return new TreeSet<T>();}应该这样称呼它:Set<String> set = createSortedSet();这很好用(尽管我在研究当前容易出错的问题时在这里的答案中已经看到)。回答:无论如何,现在我正在编写以下代码(在扩展javax.servlet.jsp.tagext.TagSupport的类中)...
2024-01-10
