Discussions
Categories
- 196.8K All Categories
- 2.2K Data
- 239 Big Data Appliance
- 1.9K Data Science
- 450.3K Databases
- 221.7K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 550 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 544 SQLcl
- 4K SQL Developer Data Modeler
- 187K SQL & PL/SQL
- 21.3K SQL Developer
- 295.9K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.5K Development Tools
- 107 DevOps
- 3.1K QA/Testing
- 646K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 155 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 18 Java Essentials
- 160 Java 8 Questions
- 86K Java Programming
- 80 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 204 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 439 LiveLabs
- 38 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K EspaΓ±ol
- 1.9K Japanese
- 232 Portuguese
Issues with Arrays.fill (πΆπππππ[] π, πΆπππππ val) method

The method just assigns the reference to the respective indexes.Β
ππππππ ππππππ ππππ ππππ(πΆπππππ[] π, πΆπππππ πππ) {
Β Β πππ (πππ π = 0, πππ = π.ππππππ; π < πππ; π++)
Β Β Β π[π] = πππ;
Β }
This can cause some unexpected behaviour. For eg.Β
// ππππππ πππππ ππ π¨πππππ³πππ
π¨πππππ³πππ<π°ππππππ> ππππ[] = πππ π¨πππππ³πππ[5];
π¨πππππ.ππππ(ππππ, πππ π¨πππππ³πππ());
// ππ π ππππππππ
ππππ[0].ππ π (0);
ππππ[1].ππ π (1);
ππππ[2].ππ π (2);
List will beΒ [ [0,1,2], [0,1,2], [0,1,2], [0,1,2], [0,1,2]] which is definitely what user wanted or expected and it can cause serious issues which will be tough to debug.
I wonder why the behaviour is so. One who is using Arrays.fill would like to do some operation on objects. If object is mutable, then it will cause such problem. If it's not, it will be like for read-onlyΒ purpose we are creating this array which doesn't makes sense to me.
I initially thought they should clone it, which is not possible for custom classes or classes which don't override clone method. Obviously, creating object using new isn't possible. Can methods like newInstance be used??Β
It looks like Arrays.fill method for object array initialization is less useful & more dangerous to use.Β