Этот вопрос уже имеет ответ здесь:
Я получаю ошибку, когда я пытаюсь назвать нестатический метод в статическом классе.
Не может сделать статическую ссылку на нестатический метод methodName () от воспроизведения типа
Я не могу сделать метод статичным, поскольку это дает мне ошибку также.
Этот статический метод не может скрыть метод экземпляра от xInterface
Там какой-либо путь состоит в том, чтобы обойти вызов нестатического метода в другом статическом методе? (Эти два метода находятся в отдельных пакетах и отдельных классах).
Если вы должны поддерживать произвольные предикаты, вы можете извлечь из этого (который основан на IDEA Daniel ):
List(v1, v2) filter (_ %2 == 0) match {
case List(value1, value2) => "a"
case List(value) => "b"
case _ => "c"
}
Определение функции:
def filteredMatch[T,R](values : T*)(f : T => Boolean)(p: PartialFunction[List[T], R]) : R =
p(List((values filter f) :_* ))
Теперь вы можете использовать его так:
filteredMatch(v1,v2)(_ %2 == 0){
case List(value1, value2) => "a"
case List(value) => "b"
case _ => "c"
}
Я не так уверен, если это хорошая идея (то есть читаемая). Но аккуратные упражнения тем не менее.
Было бы здорово, если бы вы могли совпадать на кортежи: Case (значение1, значение2) => ...
вместо списков.
Единственный способ вызовов нестатического метода из статического метода состоит в том, чтобы иметь экземпляр класса, содержащего нестатический метод. По определению, нестатический метод - это тот, который вызывается на экземпляре некоторых класс, тогда как статический метод относится к самому классу.
Вам нужен экземпляр класса, содержащий нестатический метод.
Похоже, когда вы пытаетесь вызвать нестатический метод StartSwith
класса string
без экземпляра:
String.startsWith("Hello");
Что вам нужно, это иметь экземпляр, а затем вызвать Нестатический метод:
String greeting = new String("Hello World");
greeting.startsWith("Hello"); // returns true
Так что вам нужно создать и экземпляр, чтобы вызвать его.
EF не может составить запрос из выражения LINQ, включающего метод. Для создания SQL EF требуются литеральные значения.
Вам придется обратиться к «общим» запросам, которые возвращают супернабор сущностей, необходимых для данного случая, а затем использовать методы расширения и LINQ, чтобы сузить возвращаемый набор после того, как он будет возвращен из базы данных.
-121--3643204-Можно создать экземпляр класса, в котором требуется вызвать метод, например
new Foo().nonStaticMethod();
-121--691431- Существует два способа:
Вы можете создать экземпляр класса, который вы хотите вызвать метод включен, например.
new Foo().nonStaticMethod();
Вы не можете получить это ограничение напрямую, нет. Но могут быть некоторые разумные вещи, которые вы можете сделать в вашем конкретном случае.
Например, вы можете просто «новый» экземпляр вашего класса в статическом методе, затем вызовите нестатический метод.
Но вы можете получить еще лучшие предложения, если вы публикуете свой класс (ES) - или сбивную версию их.
Canvas имеет два типа изменения изменения размера:
Вот страница, которая демонстрирует два типа «размера»: http: // xavi. CO / Static / SO-RESIZABLE-CONVAS.HTML
Если вы хотите, чтобы первый тип размера (растянуть содержимое), поместите холст в контейнер DIV
и установите ширину
и высота
холста до 100% с использованием CSS. Вот что может выглядеть этот код:
/* The CSS */
#stretch {
height: 100px;
width: 200px;
}
#stretch canvas {
width: 100%;
height: 100%;
}
<!-- The markup -->
<div id="stretch"><canvas></canvas></div>
// The JavaScript
$("#stretch").resizable();
Вторым типом размера (статическое содержимое) является двухэтапным процессом. Сначала вы должны настроить ширину
и высота
атрибуты элемента Canvas. К сожалению, это очищает холст, поэтому вы должны затем повторно привлечь все его содержание. Вот кусочек кода, который делает это:
/* The CSS */
#resize {
height: 100px;
width: 200px;
}
<!-- The markup -->
<div id="resize"><canvas></canvas></div>
// The JavaScript
$("#resize").resizable({ stop: function(event, ui) {
$("canvas", this).each(function() {
$(this).attr({ width: ui.size.width, height: ui.size.height });
// Adjusting the width or height attribute clears the canvas of
// its contents, so you are forced to redraw.
reDraw(this);
});
} });
В настоящее время код выше повторно образует содержимое холста, когда пользователь останавливает изменение размера виджета. Можно повторно нарисовать холст на , однако изменение событий возникает довольно часто, и повторные рисования являются дорогими операциями - подход с осторожностью.
-121--1578441-Это звучит как метод действительно должен быть статичным (то есть. Он не доступа к любым элементам данных, и ему не нужен экземпляр). Поскольку вы использовали термин «статический класс», я понимаю, что весь класс, вероятно, посвящен утилитам методам, которые могут быть статичными.
Тем не менее, Java не позволяет внедрению интерфейсного метода быть статическим. Поэтому, когда вы (естественно) пытаетесь сделать статический метод, вы получите ошибку «Невозможно скрыть-экземпляр-метод». (Спецификация языка Java упоминает это в разделе : : Обратите внимание, что метод, объявленный в интерфейсе, не должен быть объявлен статическим, или ошибка времени компиляции происходит, поскольку статические методы не могут быть абстрактными. «)
Так что до тех пор, пока способ присутствует в Xinterface
, и ваш класс применяется XinterFace
, вы не сможете сделать метод статическим.
Если вы не можете изменить интерфейс (или не хотите), есть несколько вещей, которые вы можете сделать:
XinterFace
), а также статический метод. Метод экземпляра будет состоять из одной строки, которую делегаты к статическому методу.