К сожалению, я считаю, что ответ - нет. Чтобы сделать то, о чем вы говорите, вам нужно, чтобы внутренний userObject DefaultMutableTreeNode
был указателем на некоторую строку, чтобы все соответствующие DefaultMutableTreeNode
могли указывать и использовать один и тот же String
объект.
Однако вы не можете вызвать DefaultMutableTreeNode.setUserObject()
с любым указателем String
, потому что в Java нет такого понятия на уровне, как в C или C ++. Прочтите эту замечательную статью в блоге о запутанных заблуждениях о передаче по значению и передаче по ссылке в Java.
Обновление: Отвечая на ваш комментарий здесь, в пространстве ответов, чтобы я мог включить пример кода. Да, это правда, что Java работает с указателями внутри ... и иногда вам приходится клонировать ссылку на объект, чтобы избежать нежелательных изменений оригинала. Однако, если коротко рассказать об этом (см. Статью в блоге выше), это не один из таких случаев.
public static void main(String[] args) {
// This HashMap is a simplification of your hypothetical collection of values,
// shared by all DefaultMutableTreeNode's
HashMap<String, String> masterObjectCollection = new HashMap<String, String>();
masterObjectCollection.put("testString", "The original string");
// Here's a simplification of some other method elsewhere making changes to
// an object in the master collection
modifyString(masterObjectCollection.get("testString"));
// You're still going to see the original String printed. When you called
// that method, a reference to you object was passed by value... the ultimate
// result being that the original object in you master collection does
// not get changed based on what happens in that other method.
System.out.println(masterObjectCollection.get("testString"));
}
private static void modifyString(String theString) {
theString += "... with its value modified";
}
Возможно, вы захотите проверить расширения JIDE Swing , некоторые из которых являются коммерческими, а другие с открытым исходным кодом и бесплатными, как в пиве. Вы можете найти какой-то компонент, который приближается к выполнению именно того, что вы хотите.