1

次のクラスには、チェックされていないとマークされたメソッドがあり、警告が表示されます。それらは正常にコンパイル/動作しますが、IntelliJ IDEA が警告を削除するように私に提供している (しかし実行できない) ため、クラスを生成する方法があるかどうかに興味があります。

public abstract class Attribute {

private final AttributedNode containerNode;
private boolean computationComplete;

public Attribute(AttributedNode node) {
    this.containerNode = node;
    this.computationComplete = false;
}

public AttributedNode getContainerNode() {
    return containerNode;
}

public Attribute getAttributeFromChildNode(int childIndex, AttributeNameEnum attributeName) {
    AttributedNode node = getContainerNode().getChild(childIndex);
    return node.getAttribute(attributeName);
}

public String getChildNodeText(int index) {
    return getContainerNode().getChild(index).getText();
}

@SuppressWarnings("unchecked")
public <T, E extends Attribute> List<T> getListOfChildAttributeValues(AttributeNameEnum name) {
    List<T> result = new LinkedList<>();
    for (AttributedNode node : this.getContainerNode().getChildren()) {
        E attribute = (E) node.getAttribute(name);
        result.add((T) attribute.getValue());
    }
    return result;
}

public <T extends Attribute> Object getAttributeValueFromContainer(AttributeNameEnum name) {
    return this.<T>getAttributeValueFromNode(name, this.getContainerNode());
}

public <T extends Attribute> Object getAttributeValueFromParent(AttributeNameEnum name) {
    return this.<T>getAttributeValueFromNode(name, this.getContainerNode().getParent());
}

@SuppressWarnings("unchecked")
public <T extends Attribute> Object getAttributeValueFromNode(AttributeNameEnum name, AttributedNode node) {
    T attribute = (T) node.getAttribute(name);
    return attribute.getValue();
}
// other methods eluded

PSジェネリックを理解していない可能性があることを前もってお詫び申し上げます。

4

0 に答える 0