我不知道“强类型”和“类型安全”之间究竟有什么区别!Arraylist是类型安全还是强类型?
请您用简单的语言说明一下吗?
假设我们使用ArrayList的,但我无法断定它是类型安全或强类型。或者我们可以将它用作两者。?
我不知道“强类型”和“类型安全”之间究竟有什么区别!Arraylist是类型安全还是强类型?
请您用简单的语言说明一下吗?
假设我们使用ArrayList的,但我无法断定它是类型安全或强类型。或者我们可以将它用作两者。?
ArrayList
不是类型安全的。这意味着是ArrayList
可分配任何类型的值:
ArrayList myList = new ArrayList();
myList.Add("this is a string");
myList.Add(19); //Notice that this is an int, but it doesn't throw an error!
这是一个问题,因为当你去使用列表,你不知道这是在列表中的类型。发生错误的可能性非常高。
避免使用ArrayLists
!改为使用通用列表,例如List<T>
类型安全的,强类型的装载短语,使得它很难让程序员处处牵制一个确切的定义。但至少有足够的共识来说明ArrayLists在任何重要的方面都不是既不是。
不要使用的ArrayList!而是使用通用List<T>
集合。
你的意思是arraylist既不是TypeSafe也不是强类型 –
我的意思是它不会对存储在集合中的项目执行任何操作。 –
但总之结论是一样的。因为没有TypeSafe也没有强类型 –
ArrayList
数据结构不是类型安全的,也不是强类型的。您无法保证ArrayList
中的对象类型,因此所有内容均以Object
的形式存储,与ASP.NET中Session
缓存中的对象存储方式类似。
最大的缺点使用ArrayList
是一个需要发生时,你想获得访问对象的实际列表铸造。如果列表中的任何值不是您期望的类型,那么您可能会获得转换异常,并且处理这些代码只是非常糟糕。
使用尽可能仿制药,与List<T>
是最接近的泛型类型的ArrayList
数据结构。
我不知道我理解你的问题。
“强/弱类型”是一种编程语言的质量。 Java是强类型的,这意味着它有严格的语法,并且它可以在编译时在你的代码中发现问题,然后错误使它运行时间。尽管(我不确定确切的答案),Java可能并不完全是类型安全的。它允许使用泛型,这意味着您可以创建一个字符串ArrayList(ArrayList<String>
),整数ArrayList(ArrayList<Integer>
),布尔ArrayList(ArrayList<Boolean>
)。 ArrayList<T>
表示您可以用<T>
替换任何对象。 ArrayList<? extends T>
意味着你可以使用任何A,B,C,土豆等,扩展T.
假设你有下面的类替代:
class Admin extends User {
//Stuff
}
class Student extends User {
//Stuff
}
class Teacher extends User {
//Stuff
}
你甚至可以拥有的任何儿童的ArrayList用户对象,例如:ArrayList<User>
。 对于此列表,您可以添加学生,管理员和教师对象。
但是,如果您不指定此ArrayList包含的数据类型(例如:List l = new ArrayList();
),则可以将任何对象放在其中,使其不是类型安全的。
泛型滥用的一个例子can be seen on Wikipedia。
完美,但我认为我的问题非常清楚。泛型是我们用于类型安全实现的方式,但是Arraylist在其基础中,既不是类型安全的,也不是强类型。这是真的吗? –
请注意,“强类型”通常适用于编程语言,而“类型安全”可能来自“类型安全集合”短语... –