用泛型的extends影响struts2的数据封装

我有两个父子关系的类

Mzcz(父类) Mzczmx(子类)

在父类中定义了子类的集合属性

Mzcz中

List<? extends Mzcz> lstMzczmxs = new ArrayList<Mzczmx>();

集合中可以存放Mzcz子类。所以这个集合可以存放Mzczmx.

但是当我从前台传数据的时候出现了问题。

如下:

<input type="text" name="mzcz.lstMzczmx[0].mzczmx_je" id="mzczmx_je"/>

当我在这个标签中输入文本,传到后台的时候出现了集合有空间,但是里面的内容都是null

我想了一下,在封装数据的时候,lstMzczmx集合中存放的类型是不确定的,不一定是mzczmx,

因为我声明的集合变量的泛型就是不确定的,只是一个范围。

把集合改一下就可以了

List<Mzczmx> lstMzczmxs = new ArrayList<Mzczmx>();

就能够穿到后台了。

时间: 2024-11-16 14:05:14

用泛型的extends影响struts2的数据封装的相关文章

Java学习之道:简述泛型通配符&lt;? extends T&gt;和&lt;? super T&gt;

<? extends T>和<? super T>含有JAVA5.0的新的概念.由于它们的外表导致了很多人误解了它们的用途: 1.<? extends T>首先你很容易误解它为继承于T的所有类的集合,这是大错特错的,相信能看下去你一定见过或用过List<? extends T>吧?为什么我说理解成一个集合是错呢?如果理解成一个集合那为什么不用List<T>来表示?所以<? extends T>不是一个集合,而是T的某一种子类的意思,记

Struts2的数据封装

1.属性驱动 *提供属性的set方法 HTML: <h1>数据封装方式一:提供set方法</h1> <form action="${pageContext.request.contextPath}/xxx.action" method="post"> 姓名:<input type="text" name="name" /><br/> 年龄:<input type

Java泛型中extends和super的理解(转)

E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定的java类型(无限制通配符类型) S.U.V – 2nd.3rd.4th types Object – 是所有类的根类,任何类的对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T.E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换. ?

JAVA 泛型通配符 ? EXTENDS SUPER 的用法

1. <? extends Hero> ArrayList heroList<? extends Hero> 表示这是一个Hero泛型或者其子类泛型heroList 的泛型可能是HeroheroList 的泛型可能是APHeroheroList 的泛型可能是ADHero所以 可以确凿的是,从heroList取出来的对象,一定是可以转型成Hero的 但是,不能往里面放东西,因为放APHero就不满足<ADHero>放ADHero又不满足<APHero> 2.

泛型限定&lt;? extends Object&gt;

关于泛型限定: <? extends E >向上限定.意思就是说只能传递E类型以及E类型的子类; 代码: package itheima; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 泛型限定 * @author Administrator * */ public class GenericityLimit { public static void main(String

java 泛型通配符 extends, super

引自:http://sharewind.iteye.com/blog/1622164 关键字说明 ? 通配符类型 <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类 <? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型),直至Object extends 示例 static class Food{} static class Fruit extends Food{} static clas

浅谈Java泛型之&lt;? extends T&gt;和&lt;? super T&gt;的区别

关于Java泛型,这里我不想总结它是什么,这个百度一下一大堆解释,各种java的书籍中也有明确的定义,只要稍微看一下就能很快清楚.从泛型的英文名字Generic type也能看出,Generic普通.一般.通用的,是一个概括性的词,那么泛型从名字上也就好理解了,它是一种通用类型,是java中各种类型的概括. ?是java泛型中的通配符,它代表java中的某一个类,那么<? extends T>就代表类型T的某个子类,<? super T>就代表类型T的某个父类. 这里我们先定义一组

JAVA泛型之&lt;? extends T&gt;:(通配符上限)和&lt;? super T&gt;(通配符下限)

一.通配符上限和通配符下限接受的类型 通配符上限:<? extends T> 通配符下限:<? super T> 以下代码是测试结果,注释为解释说明 1 package xayd.hjj; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 class A{} 7 class B extends A implements F{} 8 class C extends A{} 9 class D extends A{

java 学习中遇到的问题(二)泛型中&lt;? extends T&gt;和&lt;? super T&gt;的区别

对于一个是List<? extends T>类型的引用list1,这实际上是某种list1引用没有指定的具体类型,它是T的一种子类,但到底是哪一种子类,编译器也无法确定,因此无法使用add()来添加对象,但是因为可以确定这个list1中的任何对象至少是T类型的,因此可以用get()来返回一个T类型的对象. 而对于一个是List<? super T>类型的引用list2,这实际上是T的一种基类,但由于不能确定到底是哪一种基类,因此list2使用get()返回来的只能是一个Object