Я создал следующий минимальный воспроизводимый пример
Я получил ошибку компиляции
Eclipse Ошибка компиляции Eclipse . «Тип Pair не определяет getValue (Object), который применим здесь»
IntelliJ говорит Ошибка компиляции IntelliJ
Я пытаюсь использовать часть лога c из файла jar, поэтому я не написал этот logi c, но этот код работает нормально из декомпилированного класса.
Я поместил этот logi c в свой собственный класс и получил ошибку компиляции
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
public class TestClass
{
/**
* @param args
*/
public static void main(final String[] args)
{
final Map<ObjectAttributesValueContainer, Set<CompareAttribute>> differences = null;
final Map<CompareAttribute, Collection<ObjectAttributesValueContainer>> differentObjectsForAttributes = (Map) differences
.entrySet().stream().flatMap((entry) -> {
return ((Set) entry.getValue()).stream().map((attr) -> {
return new ImmutablePair(entry.getKey(), attr);
});
}).collect(Collectors.toMap(Pair::getValue, (pair) -> {
return new HashSet(Collections.singleton(pair.getKey()));
}, (a1, a2) -> {
a1.addAll(a2);
return a1;
}));
}
}
class CompareAttribute
{
private String qualifier;
private String group;
public CompareAttribute(final String qualifier)
{
this.qualifier = qualifier;
}
public CompareAttribute(final String qualifier, final String group)
{
this(qualifier);
this.group = group;
}
public String getQualifier()
{
return this.qualifier;
}
public void setQualifier(final String qualifier)
{
this.qualifier = qualifier;
}
public String getGroup()
{
return this.group;
}
public void setGroup(final String group)
{
this.group = group;
}
@Override
public boolean equals(final Object o)
{
if (this == o)
{
return true;
}
else if (o == null)
{
return false;
}
else if (o.getClass() != this.getClass())
{
return false;
}
else
{
final CompareAttribute that = (CompareAttribute) o;
if (!this.qualifier.equals(that.qualifier))
{
return false;
}
else if (((CompareAttribute) o).getGroup() == null && this.group == null)
{
return true;
}
else
{
return ((CompareAttribute) o).getGroup() != null && this.group != null ? this.group.equals(that.group) : false;
}
}
}
@Override
public int hashCode()
{
int result = this.qualifier.hashCode();
if (this.group != null)
{
result = 31 * result + this.group.hashCode();
}
return result;
}
@Override
public String toString()
{
return this.qualifier + (this.group != null ? '@' + this.group : "");
}
}
class ObjectAttributesValueContainer
{
private final Object object;
private final Map<CompareAttribute, Object> attributeValues;
public ObjectAttributesValueContainer(final Object object)
{
this.object = object;
this.attributeValues = new HashMap();
}
public Object getObject()
{
return this.object;
}
public Map<CompareAttribute, Object> getAttributeValues()
{
return this.attributeValues;
}
}