обработайте в пакетном режиме повторяют символ вертикальной черты, вызывающий неожиданное поведение

Отмечание финала класса может также заставить некоторую привязку метода произойти во время компиляции вместо времени выполнения. Рассмотрите "v2.foo ()" ниже - компилятор знает, что B не может иметь подкласса, таким образом, нечто () не может быть переопределено так, реализация для вызова известна во время компиляции. Если класс B НЕ отмечен финал, то возможно, что фактический тип v2 является некоторым классом, который расширяет B и переопределяет нечто ().

class A {
    void foo() {
        //do something
    }
}
final class B extends A {
    void foo() {
    }
}
class Test {
    public void t(A v1, B v2) {
        v1.foo();
        v2.foo();
    }
}
22
задан Hintswen 6 December 2009 в 10:31
поделиться

2 ответа

Есть несколько специальных символов, которые обычно должны экранировать при использовании в пакетных файлах Windows. Вот неполный список: <> & | ^%

Управляющий символ - ^ . Итак, чтобы получить литерал | , вы должны сделать следующее:

echo ^|

Когда специальный символ находится в переменной, это становится немного сложнее. Но если вы используете специальный синтаксис, вы можете заменять символы в переменной следующим образом:

set X=A^|B

REM replace pipe character with underscore
set Y=%X:|=_%

echo %Y%
REM prints "A_B"
41
ответ дан 29 November 2019 в 04:20
поделиться

экранировать его

echo \|

или заключать в кавычки

echo "|"
2
ответ дан 29 November 2019 в 04:20
поделиться
Другие вопросы по тегам:

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