Самое простое решение - создать функцию JavaScript и вызвать его для обратного вызова Ajax success
.
function callServerAsync(){
$.ajax({
url: '...',
success: function(response) {
successCallback(response);
}
});
}
function successCallback(responseObj){
// Do something like read the response and show data
alert(JSON.stringify(responseObj)); // Only applicable to JSON response
}
function foo(callback) {
$.ajax({
url: '...',
success: function(response) {
return callback(null, response);
}
});
}
var result = foo(function(err, result){
if (!err)
console.log(result);
});
Используйте конструктор super
:
public Bar(int a, double b, ...) {
super(a, b, ...);
}
JVM не будет предоставлять конструктор по умолчанию, если вы предоставили его по причинам дизайна. То, что вы можете сделать, определяет конструктор в Bar с одинаковой сигнатурой и вызовом super ().
public Bar(int x,int y) {
super(x,y);
}
Задача решается следующим образом:
class Foo{
Foo(int a, int b){}
}
class Bar extends Foo{
//Here must be a constructor OR declare a constructor in Foo without parameters
Bar(){super(1,1)} //this is an example
}
Другое решение:
class Foo{
Foo(int a, int b){}
Foo(){}
}
class Bar extends Foo{
}
Помните, что если у конструктора есть параметры с SuperClass (в этом случае Foo ), неявный конструктор на дочернем классе (в данном случае Bar) всегда будет иметь неявный вызов в «Super ()» (всегда должен быть один, если явно).
Нет, нет более «разумного» подхода. Если ваш базовый класс не имеет конструктора по умолчанию, вы должны явно вызвать правильный конструктор из всех дочерних классов.
Обратите внимание: это не означает, что для классов детей необходимо иметь точный тот же конструктор, что и базовый класс. Например, это совершенно верно:
class Foo {
protected int a;
protected int b;
protected Foo(final int a, final int b) {
this.a = a;
this.b = b;
}
}
class Bar extends Foo {
protected Bar() {
super(0,0);
}
}
Если параметры не требуются и / или имеют значения по умолчанию, вы можете определить конструктор по умолчанию (без параметров):
class Foo
{
public final int DEFAULT_A = 42;
protected int a;
protected int b;
public Foo(final int a, final int b)
{
this.a = a;
this.b = b;
}
// Is equal to new Foo(Foo.DEFAULT_A, 0);
public Foo()
{
this.a = this.DEFAULT_A;
}
}
class Bar extends Foo {}
class PiBar extends Bar
{
public final int DEFAULT_A = Math.PI;
}