Posiadam dwie klasy: Movie i Series. Obie klasy posiadają metody getID() i getOriginalTitle(). Chciałbym mieć jedną metodę z typem generycznym, która przyjmowałaby listę obiektów tych klas. Napisałem podobną metodę, z tym, że nie można w taki sposób używać metod tych klas. Da rady jakoś to zrobić, nie tworząc dwóch różnych metod?
if(selectedIndex == 0) {
deserializationMovie();
List<Movie> listNewlyAddedMovies = listMovies;
showNewlyAdded(listNewlyAddedMovies, listMovies, panelNewlyAdded, listNewlyAddedMovies.size());
} else if(selectedIndex == 1) {
deserializationSeries();
List<Series> listNewlyAddedSeries = listSeries;
showNewlyAdded(listNewlyAddedSeries, listSeries, panelNewlyAdded, listNewlyAddedSeries.size());
}
panelNewlyAdded.repaint();
}
});
deserializationMovie();
List<Movie> listNewlyAddedMovies = listMovies;
showNewlyAdded(listNewlyAddedMovies, listMovies, panelNewlyAdded, listNewlyAddedMovies.size());
}
public <T>void showNewlyAdded(List<T> list, List<T> listSerialized, JPanel panelRankingSeries, int numberOfElements) {
JLabel label;
JButton button;
int y = 40, y2 = 0, yTitle = 35, y2Title = 0;
int max = 0;
if(numberOfElements > 6)
max = 7;
else
max = numberOfElements+1;
int index = 0;
for(int i = 1; i < max; ++i) {
for(int i1 = 0; i1 < numberOfElements; ++i1) {
if(listSerialized.get(i1).getID() == list.get(list.size()-i).getID()) {
index = i1;
}
}
final int iindex = index;
label = new JLabel(Integer.toString(i));
label.setFont(new Font("SansSerif", Font.BOLD, 15));
if(i == 0)
label.setBounds(25, y, 20, 20);
else
label.setBounds(25, y+y2, 20, 20);
panelRankingSeries.add(label);
button = new JButton(list.get(list.size()-i).getOriginalTitle());
button.setContentAreaFilled(false);
button.setFont(new Font("SansSerif", Font.BOLD, 15));
if(i == 0)
button.setBounds(50, yTitle, 150, 30);
else
button.setBounds(50, yTitle+y2Title, 150, 30);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
showSeries(iindex);
}
});
panelRankingSeries.add(button);
y2+=40;
y2Title+=40;
}
}