2013-09-27 3 views
-1

MyDate.java имеет методМетод setValue (Integer) не определен для типа Integer?

class MyDate { 
public void setValue(Integer value) { 
    value = 55; 
} 
} 

PassTest.java

import learn.MyDate; 

public class PassTest { 
    public static void changeInt(Integer value) { 
    setValue(value); 
} 

показывает ошибку Метод setValue(Integer) не определен для типа Integer? Зачем?

И какая разница, если мы позвоним setValue как value.setValue здесь? Я пытался найти его в Google, но не мог понять его?

+4

Вы должны называть 'setValue()' объектом 'MyDate'. –

+0

Ваш метод определен в неправильном классе. Возможно, вы захотите использовать 'int', а не' Integer', чтобы предотвратить странную проблему об Autoboxing. Если у вас нет особо конкретной ситуации, перейдите к типам значений. –

+0

Sidenote: установка параметра метода в методе 'setValue' не влияет на уровень класса. Java работает над копией! – Fildor

ответ

2
public class MyDate { 
    private int value; 
    public void setValue(int value) { 
     this.value = value; 
    } 
} 

И потом:

import learn.MyDate; 

public class PassTest { 
    public static MyDate date = new MyDate(); 
    public static void changeInt(int value) { 
     date.setValue(value); 
    } 
} 

В качестве примера.

0

PassTest класс никоим образом не связан с MyDate, почему вы ожидаете, что он будет иметь видимость метода, определенного в MyDate? Возможно, вам нужно сначала создать экземпляр MyDate, а затем вызвать метод на нем.

Смежные вопросы