Контроллер MVC
: Поместите код здесь, который имеет отношение к разработке, что пользователь хочет, и решающий, что дать им, удавшись, зарегистрированы ли они, должны ли они видеть определенные данные, и т.д. В конце, контроллер смотрит на запросы и удается что данные (Модели) для показа и что Представления представить. Если Вы вызываете сомнение о том, должен ли код войти в контроллер, то это, вероятно, не было должно. Сохраните свои контроллеры тощими .
Представление : представление должно только содержать минимальный код для отображения данных (Модель), это не должно делать большой обработки или вычисления, это должно отображать вычисленные данные (или полученное в итоге) Моделью, или сгенерированное от Контроллера. Если Ваше Представление действительно должно сделать обработку, которая не может быть сделана Моделью или Контроллером, поместите код в Помощника. Много кода Ruby в Представлении делает разметку страниц трудно для чтения.
Модель : Ваша модель должна быть то, где весь Ваш код, который касается Ваших данных (объекты, которые составляют Ваш сайт, например, Пользователей, Сообщение, Учетные записи, Друзей и т.д.), жизни. Если код должен сохранить, обновить или суммировать данные, связанные с Вашими объектами, поместите его здесь. Это будет допускающим повторное использование через Ваши Представления и Контроллеры.
Эта ошибка возникает из-за того, что в классе объекта метод clone () защищен. Таким образом, вы должны переопределить метод clone () в соответствующем классе. Например. Добавьте код ниже в MyClass
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
Также реализуйте интерфейс Cloneable. Например. public class MyClass implements Cloneable
Потому что clone () - это защищенный метод. Подробности см. В Object.clone () .
Переопределите clone () в MyClass и заставьте класс реализовать интерфейс Cloneable .
Я сделал некоторый тестовый код по этому вопросу, и вот мои выводы:
Когда защищенный член наследуется через пакет, он становится закрытым членом унаследованного класса
, тогда как
когда защищенный член наследуется в том же пакете, он становится по умолчанию членом унаследованного класса.
В вашем примере clone () из класса Object наследуется в MyClass через пакет. Класс объекта находится в пакете java.lang, а MyClass - в пакете GoodQuestions. Таким образом, метод clone () становится закрытым членом класса MyClass.
Это объясняет, почему вы не можете получить доступ к методу clone () из класса TestSingleTon.