-
List 添加 Class 泛型5
public void test(Class clazz)
{
List list = new ArrayList();
}
这个clazz是从别的地方传过来的,可不可以指定list只能存储这个Class
我用 List<clazz> list = new ArrayList<clazz>(); 并且在类名后加上 <clazz>编译可以通过,但是运行时在后面还可以给list add不同于clazz的对象,不知道这是为什么?
问题补充:
List<clazz> list = new ArrayList<clazz>();
是错误的
<>中应该是类型.并不是实例clazz是Class类的实例所以你上面的代码是错误的.
这种时候应该使用接口来规范类型
那我怎样做才能实现这个功能呢,网上说用反射,不过还没搞清楚。
Thanks in advance!
问题补充:
public class Test<T> {
public void test(Class<T> clazz){
List<Class<T>> list = new ArrayList<Class<T>>();
Object str = "aa";
list.add((Class<T>) str);
}
public static void main(String[] args){
Test t = new Test();
t.test(String.class);
}
}
差不多是这个样子的,但运行的时候会出"java.lang.ClassCastException: java.lang.String", 不知道为什么
问题补充:
其实我就是想
List list = new ArrayList(); 的时候 这个list中只能存放传进去的指定的class, 比如String或者其他自定义的类。
谢谢大家了。
问题补充:
比如 Test t = new Test();
t.test(String.class);
这时list.add("abc");是可以的
但list.add(new Timestamp(100))则不行2008年12月12日 09:49
6个答案 按时间排序 按投票排序
-
采纳的答案
都不明白 楼主要实现啥 根据你最后补充的想到的
public class Test { public void test(Class<?> clazz){ java.util.List<Class<?>> list = new java.util.ArrayList<Class<?>>(); list.add(clazz); for (Class<?> clz : list) { System.out.println("---" + clz.getName()); } } public static void main(String[] args){ try { Test t = new Test(); t.test(Class.forName("java.lang.String")); t.test(java.util.List.class); } catch (Exception e) { e.printStackTrace(); } } }
2008年12月12日 17:54
-
<T>的具体类型要在实例的时候给出..下班去了
public class NewClass<T> { public void test(T obj){ List<T> list = new ArrayList<T>(); list.add(obj); } public static void main(String[] args) { NewClass<String> t = new NewClass<String>(); t.test("sssss"); } }
2008年12月12日 17:36
-
引用
public class NewClass<T> {
public List<T> test() {
return new ArrayList<T>();
}
public static void main(String[] args) {
NewClass<String> nc = new NewClass<String>();
nc.test().add("aaa");//这里只能是String
}
}
这个方法完全可以满足你...
如果你定要那样~ 只有BT版本的啦~~package org.test.jy; /** * * @author Administrator */ public interface List<E extends JyTest> extends java.util.List<E> { }
package org.test.jy; /** * * @author Administrator */ public class ArrayList<E extends JyTest> extends java.util.ArrayList<E> implements org.test.jy.List<E>{ }
package org.test.jy; /** * * @author Administrator */ public class JyTest { private String name; private String sex; public JyTest(String name, String sex) { this.name = name; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
package org.test.jy; /** * * @author yangtao309 */ public class Test { public static void main(String[] args) { List<JyTest> list = new ArrayList<JyTest>(); list.add(new JyTest("test1", "male")); list.add(new JyTest("test2", "female")); list.add(new JyTest("test3", "female")); list.add(new JyTest("test4", "male")); list.add(new JyTest("test5", "male")); for(JyTest jt:list) { System.out.println("---" + jt.getName()); } } }
呵呵~2008年12月12日 16:47
-
public class NewClass<T> { public List<T> test() { return new ArrayList<T>(); } public static void main(String[] args) { NewClass<String> nc = new NewClass<String>(); nc.test().add("aaa");//这里只能是String } }
比如这样,不知道是不是你想要的.2008年12月12日 15:35
-
List<clazz> list = new ArrayList<clazz>();
是错误的
<>中应该是类型.并不是实例clazz是Class类的实例所以你上面的代码是错误的.
这种时候应该使用接口来规范类型2008年12月12日 10:13
相关推荐
* 集合框架:泛型可以用于集合框架中,例如List、Map,U>等。 * DAO设计模式:泛型可以用于DAO设计模式中,例如BaseHibernateEntityDao等。 * 工具类:泛型可以用于工具类中,例如工具类的静态方法可以使用泛型。 五...
在Java编程中,我们经常需要将JSON格式的数据转换为Java对象,这通常涉及到将JSON字符串转化为List泛型。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...
当`List`中的元素是泛型类型时,我们可能需要根据这些泛型对象的某个属性来对列表进行排序。这就是“LIST泛型排序”所涉及的主题。在本篇文章中,我们将深入探讨如何实现这个功能,并通过一个具体的示例来阐述。 ...
在Java编程语言中,泛型是一种强大的特性,它允许我们在编写代码时指定容器(如List、Set、Map等)所存储的数据类型。这样可以确保在编译时进行类型检查,提高代码的安全性和可读性。"简单的List泛型模拟"这个主题...
我们可以定义一个泛型类来表示这些对象,然后使用POI或NPOI读取Excel数据,创建该类的实例,并将它们添加到泛型List中。 以下是一个简单的Java示例,展示如何使用Apache POI从Excel提取泛型数据并存入List: ```...
1. 泛型约束:`List<T>`支持泛型约束,如`where T : class`限制`T`为引用类型,`where T : struct`限制为值类型,还可以定义接口约束、基类约束等。 2. 扩容机制:当列表容量不足时,`List<T>`会自动扩容。默认情况...
泛型方法允许我们在不改变类本身的情况下,为类添加泛型行为。例如: ```java public class GenericMethodExample { public static <T> void process(T t) { // 处理逻辑 } } ``` #### 六、与旧代码交互 ##### ...
例如,add1(List<Object> list)方法只能添加Object类型的数据,add2(List<?> list)方法可以添加任何类型的数据,add3(List<? extends Object> list)方法可以添加Object或其子类的数据,add4(List<? super Children> ...
泛型集合`List<T>`继承自`Collection<T>`,它实现了`IList<T>`、`ICollection<T>`和`IEnumerable<T>`接口,提供了添加、删除、查找和遍历元素的能力。这里的`T`代表一个类型参数,可以是任何引用类型或值类型。例如...
2. 作用:表示各种泛型的父类,例如 `List<String>` 和 `List<Integer>` 都是 `List<?>` 的子类。 3. 限制:不能向类型通配符集合中添加元素,因为不知道集合里的元素类型。 泛型方法: 1. 定义:使用类型形参定义...
- **声明泛型类**:如自定义一个泛型栈`public class MyStack<T> { ... }`,`T`为类型参数,代表栈中元素的类型。 - **声明泛型接口**:如`public interface MyList<T> { ... }`,`T`为接口中方法使用的类型。 - ...
例如,`List<?>` 表示未知类型的列表,只能从中读取数据,但不能添加新元素。 - 在 `TestGen0Medthod1` 方法中,`List<String>` 和 `List<Object>` 之间的关系不满足继承原则,因此不能直接转换。而 `List<?>` 可以...
- 泛型集合不允许存储null(除了null是类的实例,如`List<Class<?>>`)。 6. 泛型和多态: - 泛型类的子类可以有自己的类型参数,但必须是父类类型参数的子类型,如`class MyArrayList<T> extends ArrayList<T>`...
`List<T>`类是一种泛型集合类,用于存储相同类型的对象列表。它提供了丰富的操作方法,可以方便地对列表中的对象进行添加、删除、查找等操作。 ##### 示例代码分析: ```csharp List<string> names = new List(); ...
使用泛型时,可以通过`extends`关键字添加类型限制,例如`List<? extends Number>`表示列表中的元素必须是`Number`或其子类。这样可以确保类型安全,同时保持代码的灵活性。 ### 泛型与数据类型转换 泛型的一个...
Java泛型还支持带有通配符的泛型类型,例如`List<?>`表示未知类型的`List`,这是不可变的。`List<? extends T>`表示`T`类型或其子类型的`List`,而`List<? super T>`表示`T`类型或其父类型的`List`。 使用泛型时,...
- 实例化泛型(Instantiation):在使用泛型时,为类型参数提供具体类型,如 `Box<Integer>` 或 `List<String>`。 2. 泛型类: - 定义:`class MyClass<T> { ... }`,这里的 `T` 是类型参数,可以在类的方法和...
泛型在Java集合框架中的应用尤其广泛,例如`List`、`Set`和`Map`等接口和实现类都支持泛型。这使得开发者可以明确指定集合中元素的类型,从而避免了类型转换错误。 以下是一个使用泛型的`Map`的示例: ```java // ...