Слияние кода завершено, страница обновится автоматически
private static String[] getBeanNamesForType(Class<?> type) {
String beanName = type.getName();
String[] beanNames = SINGLE_BEAN_NAMES_TYPE_MAP.get(beanName);
if (beanNames == null) {
List<String> beanNamesList = new ArrayList<>();
for (Map.Entry<String, Object> beanEntry : BEANS.entrySet()) {
Class<?> beanClass = beanEntry.getValue().getClass();
if (type.isInterface()) {
Class<?>[] interfaces = beanClass.getInterfaces();
for (Class<?> c : interfaces) {
if (type.getName().equals(c.getName())) {
beanNamesList.add(beanEntry.getKey());
break;
}
}
// Change to type.isAssignableFrom(beanClass) - this checks whether an object of type beanClass can be cast to type type?
} else if (type.isAssignableFrom(beanClass)) {
beanNamesList.add(beanEntry.getKey());
}
}
beanNames = beanNamesList.toArray(new String[0]);
SINGLE_BEAN_NAMES_TYPE_MAP.put(beanName, beanNames);
}
return beanNames;
}
Перевод:
private static String[] getBeanNamesForType(Class<?> type) {
String beanName = type.getName();
String[] beanNames = SINGLE_BEAN_NAMES_TYPE_MAP.get(beanName);
if (beanNames == null) {
List<String> beanNamesList = new ArrayList<>();
for (Map.Entry<String, Object> beanEntry : BEANS.entrySet()) {
Class<?> beanClass = beanEntry.getValue().getClass();
if (type.isInterface()) {
Class<?>[] interfaces = beanClass.getInterfaces();
for (Class<?> c : interfaces) {
if (type.getName().equals(c.getName())) {
beanNamesList.add(beanEntry.getKey());
break;
}
}
// Измени на type.isAssignableFrom(beanClass) - это проверяет, можно ли объект типа beanClass привести к типу type?
} else if (type.isAssignableFrom(beanClass)) {
beanNamesList.add(beanEntry.getKey());
}
}
beanNames = beanNamesList.toArray(new String[0]);
SINGLE_BEAN_NAMES_TYPE_MAP.put(beanName, beanNames);
}
return beanNames;
}