java getter重载

java getter重载,java,Java,为什么我不能以以下方式重载JTextField类型的类成员: ` 在Java中,重载是指具有不同方法签名的同名方法。但是,返回类型不是方法签名的一部分 编译器必须知道要解析的返回类型,如果方法签名相同,则无法区分它们或知道要使用哪个,因此,根据JLS 8.4.2.在Java中,重载指具有不同方法签名的同名方法。但是,返回类型不是方法签名的一部分 编译器必须知道要解析的返回类型,如果方法签名相同,则无法区分它们或知道要使用哪个,因此,根据JLS 8.4.2.,因为它不使用方法的输出来确定应该调用哪

为什么我不能以以下方式重载JTextField类型的类成员: `


在Java中,重载是指具有不同方法签名的同名方法。但是,返回类型不是方法签名的一部分


编译器必须知道要解析的返回类型,如果方法签名相同,则无法区分它们或知道要使用哪个,因此,根据JLS 8.4.2.

在Java中,重载指具有不同方法签名的同名方法。但是,返回类型不是方法签名的一部分


编译器必须知道要解析的返回类型,如果方法签名相同,则无法区分它们或知道要使用哪个,因此,根据JLS 8.4.2.

,因为它不使用方法的输出来确定应该调用哪个方法

例如,如果您刚刚执行,应运行哪个方法:

m_oFilename.filename();

编译器不知道要运行哪个,因此无法编译。

因为它不使用方法的输出来确定应该调用哪个方法

例如,如果您刚刚执行,应运行哪个方法:

m_oFilename.filename();

编译器不知道运行哪个,因此无法编译。

例如,假设您编写了
Object o=m\u of ilename.filename()
。将调用哪个重载?@MarkoFrelih:任何修复程序,无论是否使用泛型类型,都必须使用不同的方法名称或不同的参数类型。由于类型擦除,任何泛型返回类型都将成为
对象
,然后甚至返回类型都将是相同的。嗯,我认为你们都是对的:)。所以,真的没有办法做到这一点。我希望避免重命名方法,因为代码很难看……例如,假设您编写了
Object o=m_of ilename.filename()
。将调用哪个重载?@MarkoFrelih:任何修复程序,无论是否使用泛型类型,都必须使用不同的方法名称或不同的参数类型。由于类型擦除,任何泛型返回类型都将成为
对象
,然后甚至返回类型都将是相同的。嗯,我认为你们都是对的:)。所以,真的没有办法做到这一点。我想避免重命名方法,因为代码很难看……对我来说,
filename()
应该返回
String
。另一个方法应该重命名,可能是
filenameField()
。更好的是,为了坚持标准的getter命名,请使用
getFilename()
getFilenameField()
。在我的代码中,我避免以“get”开头的方法命名,因此我可以快速将java sdk方法与自定义方法区分开来。对我来说,
filename()
应该返回
String
。另一个方法应该重命名,可能是
filenameField()
。更好的是,为了坚持标准的getter命名,请使用
getFilename()
getFilenameField()
。在我的代码中,我避免以“get”开头的方法命名,因此我可以快速将java sdk方法与自定义方法区分开来。