Я только что написал что-то, чтобы что-то описать по намерениям авторов. Я нашел, что лучше всего было бы позволить конструктору взять все объекты, а затем в реализованном методе использовать объекты-конструкторы.
Однако, если вы пишете общий класс интерфейса, вам необходимо передать объект или лучше список объектов. Это может быть сделано Object [] или даже лучше, Object ... потому что его легче вызвать.
См. Мою часть примера чуть ниже.
List lst = new ArrayList();
lst.add("1");
lst.add("2");
SomeAbstractClass p = new SomeAbstractClass (lst, "another parameter", 20, true) {
public void perform( ) {
ArrayList lst = (ArrayList)getArgs()[0];
}
};
public abstract class SomeAbstractClass{
private Object[] args;
public SomeAbstractClass(Object ... args) {
this.args = args;
}
public abstract void perform();
public Object[] getArgs() {
return args;
}
}
Пожалуйста, смотрите это сообщение о закрытии Java, которое поддерживает это из коробки: http://mseifed.blogspot.se/2012/09/closure-implementation-for-java-5-6-and.html
Версия 1 поддерживает передачу нефинальных замыканий с автозапуском: https://github.com/MSeifeddo/Closure-implementation-for-Java-5-6-and-7/blob/master/ org / mo / close / v1 / Closure.java
SortedSet sortedNames = new TreeSet();
// NOTE! Instead of enforcing final, we pass it through the constructor
eachLine(randomFile0, new V1(sortedNames) {
public void call(String line) {
SortedSet sortedNames = castFirst(); // Read contructor arg zero, and auto cast it
sortedNames.add(extractName(line));
}
});
Спасибо, Эрик. Это работает для меня, следуя советам и инструкциям Эрика, упомянутым на github.com/javieraviles/cypress-upload-file-post-form
Cypress.Commands.add(
"Post_Clients",
(imagePath, imageType, attr1, attr2, attr1Val, done) => {
cy.fixture(imagePath, "binary").then(imageBin => {
Cypress.Blob.binaryStringToBlob(imageBin, imageType).then(blob => {
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
const data = new FormData();
data.set(attr1, attr1Val);
data.set(attr2, blob);
xhr.open("POST", "https://api.teamapp.myhelpling.com/admin/clients");
xhr.setRequestHeader("accept", "application/json");
xhr.setRequestHeader("access-token", accesstoken);
xhr.setRequestHeader("client", client);
xhr.setRequestHeader("expiry", expiry);
xhr.setRequestHeader("token-type", tokentype);
xhr.setRequestHeader("uid", uid);
xhr.onload = function() {
done(xhr);
};
xhr.onerror = function() {
done(xhr);
};
xhr.send(data);
});
});
}
);
it.only("API POSTing TEST", () => {
cy.Post_Clients(
"/images/clients/Golden JPEG.jpeg",
"image/jpeg",
"client[name]",
"client[client_logo_attributes][content]",
"Test Attr 1 Value is Hi!!!",
response => {
cy.writeFile(
"cypress/fixtures/POST API OUTPUT DATA/Client.json",
response.
);
expect(response.status).to.eq(201);
}
);
});