Inconsistency between ClassDesc::packageName and Class::getPackageName

Joseph D. Darcy joe.darcy at oracle.com
Mon Aug 22 20:09:03 UTC 2022


On 8/22/2022 11:57 AM, Alan Bateman wrote:
> On 22/08/2022 18:13, Kasper Nielsen wrote:
>> Hi,
>>
>> I understand that the methods are behaving as specified.
>> However, I still think that
>>
>> int.class.getPackageName() = "java.lang"
>> int.class.describeConstable().get().packageName() = ""
>>
>> is surprising behavior. And should probably as a minimum be
>> documented on ClassDesc::packageName.
>>
> A named module is a set of named packages and it just wouldn't work 
> for a class in a named module to say that it's in the unnamed package. 
> As I recall, the original proposal for getPackageName was that it 
> return null when the class is for an array or primitive class but that 
> turned out to be a usability issue. The proposal was refined to what 
> is specified now.
>
> ClassDesc is a nominal descriptor so it's more like parsing a string 
> to get the package name. I don't disagree that the packageName method 
> could link to isArray and componentType when the descriptor is for an 
> array type, or isPrimitive to test if the descriptor is for a 
> primitive type.


I agree it would be fine to add apiNote/@see/@link tags, etc. , but 
don't think any behavior change is justified.

-Joe



More information about the core-libs-dev mailing list