Как я могу открыть несколько файлов так же, как explorer.exe? [Дубликат]

Необработанный тип - это имя общего класса или интерфейса без аргументов типа. Например, с учетом общего класса Box:

public class Box {
    public void set(T t) { /* ... */ }
    // ...
}

Чтобы создать параметризованный тип Box, вы указываете фактический аргумент типа для параметра формального типа T:

Box intBox = new Box<>();

Если аргумент фактического типа опущен, вы создаете необработанный тип Box:

Box rawBox = new Box();

. Поэтому Box является необработанным типом родового типа Box. Однако не общий тип или тип интерфейса не является сырым типом.

Необработанные типы отображаются в устаревшем коде, потому что многие классы API (например, классы Collections) не были типичными до JDK 5.0. При использовании сырых типов вы, по существу, получаете поведение перед генериками - Box дает вам Object s. Для обратной совместимости допускается присвоение параметризованного типа его необработанному типу:

Box stringBox = new Box<>();
Box rawBox = stringBox;               // OK

Но если вы назначаете сырой тип параметризованному типу, вы получите предупреждение:

Box rawBox = new Box();           // rawBox is a raw type of Box
Box intBox = rawBox;     // warning: unchecked conversion

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

Box stringBox = new Box<>();
Box rawBox = stringBox;
rawBox.set(8);  // warning: unchecked invocation to set(T)

Предупреждение показывает, что необработанные типы обходят общие проверки типа, откладывая улов небезопасных код для выполнения. Поэтому вам следует избегать использования необработанных типов.

В разделе «Тип стирания» содержится дополнительная информация о том, как компилятор Java использует необработанные типы.

Непроверенные сообщения об ошибках

As упомянутый ранее, при смешивании устаревшего кода с общим кодом вы можете столкнуться с предупреждающими сообщениями, подобными следующим:

Примечание: Example.java использует непроверенные или небезопасные операции.

Примечание. : Перекомпиляция с -Xlint: не проверяется для деталей.

blockquote>

Это может произойти при использовании более старого API, который работает с необработанными типами, как показано в следующем примере:

public class WarningDemo {
    public static void main(String[] args){
        Box bi;
        bi = createBox();
    }

    static Box createBox(){
        return new Box();
    }
}

Термин «непроверенный» означает, что компилятор не имеет достаточной информации о типе для выполнения всех проверок типа, необходимых для обеспечения безопасности типа. Предупреждение «unchecked» по умолчанию отключено, хотя компилятор дает подсказку. Чтобы просмотреть все «непроверенные» предупреждения, перекомпилируйте с помощью -Xlint: unchecked.

Повторная компиляция предыдущего примера с -Xlint: unchecked показывает следующую дополнительную информацию:

WarningDemo.java:4: warning: [unchecked] unchecked conversion
found   : Box
required: Box
        bi = createBox();
                      ^
1 warning

Чтобы полностью отключить unchecked warnings, используйте флаг -Xlint: -unchecked. Аннотации @SuppressWarnings("unchecked") подавляют непроверенные предупреждения. Если вы не знакомы с синтаксисом @SuppressWarnings, см. Аннотации.

Исходный источник: Учебники по Java

2
задан pqvst 4 March 2014 в 22:01
поделиться

1 ответ

Нет, ShellExecute не может этого сделать. Вместо этого способ IContextMenu.

В широком смысле:

  • Привязать к родительской папке с помощью SHBindToObject
  • Query для контекстного меню для файлов, о которых идет речь, с IShellFolder::GetUIObjectOf
  • Инициализировать контекстное меню с помощью IContextMenu::QueryContextMenu, передав флаг CMF_DEFAULTONLY
  • Вызвать команду по умолчанию с помощью IContextMenu::InvokeCommand
7
ответ дан Jonathan Potter 21 August 2018 в 16:31
поделиться
  • 1
    Это почти то, что мне нужно. Единственная проблема, которую я обнаружил, заключается в том, что опускание глагола (т. Е. Указание InvokeCommand на использование глагола по умолчанию) не работает для меня (по крайней мере, не для mp3-файлов). Возможно, что глагол по умолчанию заканчивается «открытием». который, по-видимому, не работает с WMP. Однако, поскольку я в первую очередь нуждаюсь в этом для медиафайлов, я должен всегда использовать «играть». – pqvst 4 March 2014 в 23:31
Другие вопросы по тегам:

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