I\'ve made an example to demonstrate my problem:
Metrical.java
public interface Metrical { double distance(T other); }
Use public class Widget implements Metrical>.
public class Widget implements Metrical>
public double distance(Widget other) {} becomes public double distance(Widget other) {}
public double distance(Widget other) {}
other) {}