Java中Set类初始化问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中Set类初始化问题相关的知识,希望对你有一定的参考价值。
本人以前用C++的,最近紧急需要用Java,只能现学现用,在用到Set类的时候,有点不明白的地方,请教大家。我看到Set初始化的时候有两种方式:
Set<String> setTmp=new Set<String> ();
Set setTmp=new HashSet();
疑问:1.这两种方法有什么不同?2.第二种方法初始化的时候,.没有知名Set容器内的对象类型,是不是什么类型都是可以的?这种情况下,Set容器内的对象的类型是不是必须一致的,如果是String对象就必须所有容器内元素都是String,不能有int?
第二种方式你也可以给它加<String>,这叫泛型,就是限制这个类里只能传你指定的类型及其子类。
由于Java所有对象的类是Object类,所以如果不写就默认是Object类,所有类的最顶级父类都是Object,所以传什么都可以,
Set setTmp = new HashSet();和Set<Object> setTmp = new HashSet<Object>();两种方式是等价的。
Java有八种基本数据类型,是不属于Object类的子类的,byte, short, int,long,char,double,float,boolean,对这八种类有他们各自的包装类,依次是Byte,Short,Integer,Long,Character,Double,Float,Boolean,这八个包装类是Object的子类,是可以作为Set的类型用的,也就是你可以写成Set<Integer> 但是不能写成Set<int>. 参考技术A 个人觉得,<String>只不过是对Set的泛型,也就是指定了Set的类型。 而没有<string>修饰的Set默认类型是Object,里面什么都可以放。你要想放String类型就转成String ,int类型也是一样的。有Set指定泛型后,Set中只能放String类型的字符串。不论是hashSet还是实例化Set,他们不同是 HashSet 实现了Set接口中的方法。如果实例化Set,则要自己实现接口中的方法。 参考技术B 是的,第一个setTmp中的元素必须是String类型的,因为你用泛型给setTmp中的元素类型约束了。但是第二个setTmp中的元素类型则没有限制,因为没有泛型约束。 参考技术C 第一种方法应该不可以创建类的实例吧,Set是接口 没法被实例化的。hashSet是实现了Set接口的,是可以被实例化,没有指定泛型,可以使用存放任何对象,也就是说是Object的,如果指定了泛型,那么就只能存放指定泛型的对象。
java中SSH框架的实体类设置get,set方法问题
SSH框架中,比如说,Action调用Service,要设置私有的service属性出来,还要生成GET和set方法,这是为什么?
举例:
private xxxxService xxxxx;
public xxxxx getxxxxx()
return xxxxx;
public void setxxxxx(xxxxx xxxxx)
this.xxxxx = xxxxx;
我知道不设置的话set方法的话,就无法在Action中调用service里面的方法。
可是这是为什么呢?
就是用Spring管理的。我知道怎么用,在XML文件里面配置啊,然后在Action中设置一个Service类私有属性,再设置Set,然后就通过设置的那个私有属性,就可以调用Service类里面的方法了
我就是想知道,是为什么,为什么要设置Set方法。你讲了半天也没讲到关键点。
你可以去百度 spring依赖注入 然后去看其中的set注入。 你就知道为什么了。
本回答被提问者和网友采纳以上是关于Java中Set类初始化问题的主要内容,如果未能解决你的问题,请参考以下文章