Skip to content

Instantly share code, notes, and snippets.

@ahojukka5
Created May 14, 2020 05:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ahojukka5/0bdceb430d00c7ee8e8bddf5985412f8 to your computer and use it in GitHub Desktop.
Save ahojukka5/0bdceb430d00c7ee8e8bddf5985412f8 to your computer and use it in GitHub Desktop.
class Main4 {
static class Data1 {
int data = 5;
int getData() {
return data;
}
void setData(int data) {
this.data = data;
}
}
static class Data2 {
int data = 10;
int acquireData() {
return data;
}
void resetData(int data) {
this.data = data;
}
}
interface DataInterface<T> {
int getData(T data);
void setData(T data, int newData);
}
static class Manipulator<T> {
void manipulate(DataInterface<T> iface, T data) {
int oldData = iface.getData(data);
System.out.println(oldData);
iface.setData(data, oldData + 1);
}
}
public static void main(String[] args) {
Data1 D1 = new Data1();
Data2 D2 = new Data2();
Manipulator<Data1> M1 = new Manipulator<>();
Manipulator<Data2> M2 = new Manipulator<>();
DataInterface<Data1> if1 = new DataInterface<Data1>() {
@Override
public int getData(Data1 data) {
return data.getData();
}
@Override
public void setData(Data1 data, int newData) {
data.setData(newData);
}
};
DataInterface<Data2> if2 = new DataInterface<Data2>() {
@Override
public int getData(Data2 data) {
return data.acquireData();
}
@Override
public void setData(Data2 data, int newData) {
data.resetData(newData);
}
};
M1.manipulate(if1, D1);
M2.manipulate(if2, D2);
M1.manipulate(if1, D1);
M2.manipulate(if2, D2);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment