Вкл. Object.toString()
Причина, по которой вы получаете такую строку, в том, что массивы просто наследуют, а не @Override
метод Object.toString()
.
Метод toString
для class Object
возвращает строку, состоящую из имени класса, экземпляром которого является объект, символ знака @
и шестнадцатеричное представление без знака хеш-кодаобъект.Другими словами, этот метод возвращает строку, равную значению:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Чтобы вернуть представление String
массива, в котором перечислены его элементы, вы можете использовать, например, Arrays.toString
, а для «многомерных» массивов Arrays.deepToString
Смежные вопросы
On deepEquals
и deepToString
для "многомерных" массивов:
При определении собственного типа
Следует сказать, что вашиспользование String[]
не лучший выбор дизайна.
Все было бы намного лучше, если бы вы определили свой собственный class BasicItem
, поддерживаемый различными enum
, со столькими полями final
, сколько практично дляобеспечить неизменность;возможно, что-то вроде этого:
public enum ItemType {
KNIFE, SWORD, AXE;
}
public enum Attribute {
SELLABLE, EDIBLE;
}
public class BasicItem {
final String name;
final String desc;
final ItemType type;
final int attackAdd;
final int defenseAdd;
final Set<Attribute> attributes;
//...
}
Вы действительно должны воспользоваться всеми преимуществами хорошего объектно-ориентированного дизайна.
См. также