推荐链接
发布时间: 2007-08-08
请登录以投票
发布时间: 2007-08-08
............
上
请登录以投票
发布时间: 2007-08-08
那javaeye大师呢?
喜欢将其他人的帖子发布为新手的人
请登录以投票
发布时间: 2007-08-08
insiku写道
首先,以上代码必须正确
如果方法1和方法2重载,则列表与列表
不同
那么为什么方法1和方法3不能超载?
如果由于参数表未使方法1和方法2重载,有什么区别?是返回类型吗?
那么为什么方法1和方法4不能超载?
涉及泛型的重载方法的规范是否发生了变化?
是错误吗??? 1.6出来了,应该找不到这种错误吗?
这不是一个错误,尽管令人困惑.
我试图解释:
首先,您需要了解JAVA中泛型的实现是“擦除方法”,这意味着尽管List 和List 在编译阶段有所不同,但是在编译为字节码时,事实都已成为普通列表,但是它们将被添加到方法中的适当位置. 因此,尽管方法1和方法3构成了重载关系(此处无需考虑方法返回类型),但由于擦除之后,两种方法之间没有区别(此处需要考虑方法返回类型) ). 这样会导致编译错误.
但是,方法1和方法2也构成了重载关系,并且由于它们具有不同的返回类型,因此在擦除泛型后仍可以区分它们,并且不会引起编译错误.
请登录以投票
发布时间: 2007-08-08
伊斯特森写道
insiku写道
首先,以上代码必须正确
如果方法1和方法2重载,则列表与列表
不同
那么为什么方法1和方法3不能超载?
如果由于参数表未使方法1和方法2重载,有什么区别?是返回类型吗?
那么为什么方法1和方法4不能超载?
涉及泛型的重载方法的规范是否发生了变化?
是错误吗??? 1.6出来了,应该找不到这种错误吗?
这不是一个错误,尽管令人困惑.
我试图解释:
首先,您需要了解JAVA中泛型的实现是“擦除方法”,这意味着尽管List 和List 在编译阶段有所不同方法重载的返回值,但是在编译为字节码时,事实都已成为普通列表,但是它们将被添加到方法中的适当位置. 因此,尽管方法1和方法3构成了重载关系(此处无需考虑方法返回类型)方法重载的返回值,但由于擦除之后,两种方法之间没有区别(此处需要考虑方法返回类型) ). 这样会导致编译错误.
但是,方法1和方法2也构成了重载关系,并且由于它们具有不同的返回类型,因此在擦除泛型后仍可以区分它们,并且不会引起编译错误.
不好意思
您的理论基础在哪里?
方法重载是否涉及返回类型?
根据您的意见,编译器将常见的方法重载和涉及泛型的方法重载视为两个不同的规范
答案是否基于现象?
请登录以投票
发布时间: 2007-08-08
insiku写道
伊斯特森写道
insiku写道
首先,以上代码必须正确
如果方法1和方法2重载,则列表与列表
不同
那么为什么方法1和方法3不能超载?
如果由于参数表未使方法1和方法2重载,有什么区别?是返回类型吗?
那么为什么方法1和方法4不能超载?
涉及泛型的重载方法的规范是否发生了变化?
是错误吗??? 1.6出来了,应该找不到这种错误吗?
这不是一个错误,尽管令人困惑.
我试图解释:
首先,您需要了解JAVA中泛型的实现是“擦除方法”,这意味着尽管List 和List 在编译阶段有所不同,但是在编译为字节码时,事实都已成为普通列表,但是它们将被添加到方法中的适当位置. 因此,尽管方法1和方法3形成了重载关系(此处不需要考虑方法返回类型),但是由于擦除之后,两种方法之间没有区别(此处需要考虑方法返回类型) ). 这样会导致编译错误.
但是,方法1和方法2也构成了重载关系,并且由于它们具有不同的返回类型,因此在擦除泛型后仍可以区分它们,并且不会引起编译错误.
不好意思
您的理论基础在哪里?
方法重载是否涉及返回类型?
根据您的意见,编译器将常见的方法重载和涉及泛型的方法重载视为两个不同的规范
答案是否基于现象?
我的理论基础: 的第247页,第263页等.
方法重载不会设计返回类型(请注意我的帖子中的说明)
否. 注意: 尽管方法1和方法3构成了重载关系,但是由于通用擦除方法,将导致编译错误. 更多有关Java规范的信息..
另一个: 房东的问题语气使我感到不舒服...
请登录以投票
发布时间: 2007-08-08
伊斯特森写道
insiku写道
伊斯特森写道
insiku写道
首先,以上代码必须正确
如果方法1和方法2重载,则列表与列表
不同
那么为什么方法1和方法3不能超载?
如果由于参数表未使方法1和方法2重载,有什么区别?是返回类型吗?
那么为什么方法1和方法4不能超载?
涉及泛型的重载方法的规范是否发生了变化?
是错误吗??? 1.6出来了,应该找不到这种错误吗?
这不是一个错误,尽管令人困惑.
我试图解释:
首先,您需要了解JAVA中泛型的实现是“擦除方法”,这意味着尽管List 和List 在编译阶段有所不同,但是在编译为字节码时,事实都已成为普通列表,但是它们将被添加到方法中的适当位置. 因此,尽管方法1和方法3构成了重载关系(此处无需考虑方法返回类型),但由于擦除之后,两种方法之间没有区别(此处需要考虑方法返回类型) ). 这样会导致编译错误.
但是,方法1和方法2也构成了重载关系,并且由于它们具有不同的返回类型,因此在擦除泛型后仍可以区分它们,并且不会引起编译错误.
不好意思
您的理论基础在哪里?
方法重载是否涉及返回类型?
根据您的意见,编译器将常见的方法重载和涉及泛型的方法重载视为两个不同的规范
答案是否基于现象?
我的理论基础: 的第247页,第263页等.
方法重载不会设计返回类型(请注意我的帖子中的说明)
否. 注意: 尽管方法1和方法3构成了重载关系,但是由于通用擦除方法,将导致编译错误. 更多有关Java规范的信息.
另一个: 房东的问题语气使我感到不舒服...
技术讨论
没有其他意思
我只想知道为什么可以通过返回类型来区分重载类型,以及调用它时会发生什么
可能有点兴奋,请原谅我
由于方法重载不涉及返回类型,因此它仅基于参数列表
为什么方法1和2可以重载
在操作过程中,通用擦除将使两种方法的参数列表相同
但是为什么要重新加载它.
您说这是因为返回类型不同,但是已经弄清了前提,并且重载不涉及返回类型
所以~~~
如何解决这个问题
请登录以投票
发布时间: 2007-08-08
我反编译了代码
正如您所说,在运行时取消泛型
public void test(List list)
{
System.out.println("List extends Object>");
}
public ArrayList test(List list)
{
System.out.println("List");
return null;
}
但是此代码不能自己编辑
为什么泛型没问题
如果您认为它是涉及泛型的重载,则可以根据返回类型对其进行区分
这个理论基础在哪里?
请登录以投票
发布时间: 2007-08-08
Eastsun`~~睡着了吗?
请登录以投票
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-180439-1.html