Метод Java диспетчеризирует с нулевым аргументом

Попробуйте добавить это в форму

@using (Html.BeginForm("Save", "Contacts", FormMethod.Post))

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

РЕДАКТИРОВАТЬ: Основываясь на правке вопроса, делая автономный идентификатор контакта обнуляемым, это должно решить проблему идентификатора всегда требуется

13
задан Yang Meyer 18 December 2008 в 12:21
поделиться

4 ответа

Какую версию Java Вы используете? С 1.6.0_11 код (вставляемый ниже) компиляции и выполнения.

Я уверен его очевидное почему foo(testVal) переходит в foo(Object).

Причина, почему foo(null) переходит в foo(String) немного комплекса. Константа null имеет тип nulltype, который является подтипом всех типов. Так, это nulltype расширяется String, который расширяется Object.

Когда Вы звоните foo(null) компилятор ищет перегруженный метод с наиболее определенным типом. С тех пор String более конкретно затем Object это - метод, который называют.

Если у Вас была другая перегрузка, которая была так же конкретна как Строка, сказать foo(Integer) затем Вы получили бы неоднозначную ошибку перегрузки.

class NullType {

  public static final void main(final String[] args) {
    foo();
  }

  static void foo()
  {
    Object testVal = null;
    foo(testVal);    // dispatched to foo(Object)
    foo(null);    // compilation problem -> "The method foo(String) is ambiguous"   
  }

  public static void foo(String arg) { // More-specific
    System.out.println("foo(String)");
  }

  public static void foo(Object arg) { // Generic
    System.out.println("foo(Object)");
  }

}
24
ответ дан 1 December 2019 в 20:58
поделиться

Поскольку второе прокомментировало вызов с пустым указателем, неоднозначно к компилятору. Литеральный пустой указатель мог быть строкой или объектом. Принимая во внимание, что присвоенное значение имеет определенный тип. Необходимо бросить пустой указатель, например, test.foo ((Строка) пустой указатель) для удаления неоднозначности.

2
ответ дан 1 December 2019 в 20:58
поделиться

Кто-либо попробовал пример???

С 1.6.0 нечто (пустой указатель) отправлен самому определенному методу, применимому, который является нечто (Строка)...

Если Вы добавляете, что в новом методе говорится, что нечто (Целое число) компилятор не может выбрать самый определенный применимый метод и показывает ошибку.

- Patrick

1
ответ дан 1 December 2019 в 20:58
поделиться

Извините, что использовал ответ для комментария, но мне нужно к почтовому индексу, который не впишется в комментарий.

@Yang, я также могу скомпилировать и выполнить следующее. Можно ли отправить полный код, который компилирует с одной строкой, прокомментированной таким образом что, если я некомментирую, что строка она не скомпилирует?

class NullType {

  public static final void main(final String[] args) {
    foo();
    new Test().bar(new Test());
  }

  static void foo()
  {
    Object testVal = null;
    foo(testVal);    // dispatched to foo(Object)
    // foo(null);    // compilation problem -> "The method foo(String) is ambiguous"   
  }

  public static void foo(String arg) { // More-specific
    System.out.println("foo(String)");
  }

  public static void foo(Integer arg) { // More-specific
    System.out.println("foo(Integer)");
  }

  public static void foo(Object arg) { // Generic
    System.out.println("foo(Object)");
  }


}


class Test
{
  void bar(Test test)
  {
    Object testVal = null;
    test.foo(testVal);    // dispatched to foo(Object)
    test.foo(null);    // compilation problem -> "The method foo(String) is ambiguous"   
  }

  public void foo(String arg) { // More-specific
    System.out.println("foo(String)");
  }

  public void foo(Object arg) { // Generic
    System.out.println("foo(Object)");
  }
}
1
ответ дан 1 December 2019 в 20:58
поделиться
Другие вопросы по тегам:

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