Java B和A之间的差异<;B>;B
假设B类扩展了A类,我想为B声明一个变量。什么更有效?为什么Java B和A之间的差异<;B>;B,java,types,Java,Types,假设B类扩展了A类,我想为B声明一个变量。什么更有效?为什么 bb 或 ab 两种声明都不比另一种更有效 但是ab并不声明类型b的引用,它声明类型A的引用,该类型是在类型b上模板化的 除非是泛型类,否则第二种形式是非法的。我认为这不是效率问题,而是用法问题。如果纯a对象不打算使用B,为什么您希望它是AB?使用BBA是使用B作为类型的模板类,例如: List是字符串列表,因此List将是B对象列表 WeakReference是对字符串的弱引用,因此WeakReference将是对B对象的弱引用
bb
或ab
两种声明都不比另一种更有效 但是
ab
并不声明类型b
的引用,它声明类型A
的引用,该类型是在类型b
上模板化的
除非是泛型类,否则第二种形式是非法的。我认为这不是效率问题,而是用法问题。如果纯a对象不打算使用B,为什么您希望它是
AB
?使用BB
A
是使用B
作为类型的模板类,例如:
是字符串列表,因此List
将是List
对象列表B
是对字符串的弱引用,因此WeakReference
将是对WeakReference
对象的弱引用B
- 您的声明不会做同样的事情。第一个声明类型为
B
,而第二个声明类型为A
,其中T是一个类型参数,其插槽由类型B
填充。如果B扩展了A,那么我将尽可能多地使用类型A
A小部件=新B()
这降低了代码的其他部分对您的实现可能做出的假设 您混淆了两个不同的概念
class B extends A {
}
表示B
是A
如果您有类似于A
的内容,则表示您的类A
定义为
class A<T> {
}
因此,如果T
取值String
,则表示字符串列表
所以A
并不意味着B扩展了A
你应该使用
B B
你的解释清楚了别人指的是什么。谢谢不管怎样,谢谢大家。
class List<T> {
}