Безопасность с точки зрения типов, дженерики Java и запросы

Браузер не может выполнить любой скрипт npm.

Простейшим решением было бы установить пакетный файл на компьютере ПО, который будет выполнять последовательно:

git clone < e2e-repo >
cd < e2e-repo >
npm install  
npm run e2e
10
задан Michael Tiller 15 May 2009 в 15:42
поделиться

4 ответа

Наиболее близким «шаблоном», на мой взгляд, является токен типа , и Руководство по Generics рекомендует их. Вы также можете превратить базовый предикат в токен супертипа (он же гаджет Gafter) и сохранить пару лишних строк при определении новых предикатов.

1
ответ дан 4 December 2019 в 04:21
поделиться

Если хотите, вы можете использовать шаблон посетителя или его варианты, чтобы обойти явное построение и приведение типов. См. вики-страницу спящего режима на этом . Я думал о том, решите ли вы свою проблему, полностью учитывая особенности стирания шрифта, и я не совсем уверен, что это сработает полностью.

edit: Я видел ваше добавление. Если вы заставите свою иерархию предикатов следовать иерархии посетителей, вам не потребуется преобразование перед вызовом сопоставления. Вот так (непроверено):

interface Element {
    public boolean accept(ElementPredicateVisitor v);
}

class Declaration implements Element {
    public boolean accept(ElementPredicateVisitor v) {
        return v.visit(this);
    }    
}

class TaxReturn implements Element {
    public boolean accept(ElementPredicateVisitor v) {
        return v.visit(this);
    }    
}


interface IElementPredicate {
    public void match(Element e);
}

class ElementPredicateVisitor implements IElementPredicate {
    public boolean match(Element e) { 
        return e.accept(this); 
    }
    /**
     * default values
     */
    boolean visit(Declaration d) { return false; }
    boolean visit(TaxReturn tr) { return false; }
}

class DeclarationNamePredicate extends ElementPredicateVisitor {
    boolean visit(Declaration d) {
        return d.dSpecificExtraName() == "something"
    }
}

class TaxReturnSumPredicate extends ElementPredicateVisitor {
    boolean visit(TaxReturn tr) {
        return tr.sum() > 1000;
    }
}


public <T extends Element> List<T> findAll(IElementPredicate pred) {
    List<T> ret = new LinkedList<T>();
    for(Element e: elements) {            
        if (pred.match(obj)) {
                ret.add((T) obj);
        }
    }
    return ret;
}
1
ответ дан 4 December 2019 в 04:21
поделиться

Структура вашего дерева очень похожа на объект XML DOM. Думали ли вы о переводе своего дерева в структуру DOM и использовании XPath для выполнения ваших запросов? Это могло бы быть намного меньше специального кода.

1
ответ дан 4 December 2019 в 04:21
поделиться

I think that is nice and clean way of doing it and I would probably do it in the same way.

0
ответ дан 4 December 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: