java des classes partielles
Petit préambule. J'étais un bon développeur java sur jdk 1.4. Après ça, j'ai changé de plates-formes, mais ici, je viens avec un problème donc, la question est fortement sujet de jdk 1.6 (ou plus 🙂 ). J'ai 3 couplé classe, la nature du couplage concernés par des méthodes indigènes. Le soufflet est un exemple de cette classe de 3e
public interface A
{
public void method();
}
final class AOperations
{
static native method(. . .);
}
public class AImpl implements A
{
@Override
public void method(){
AOperations.method( . . . );
}
}
Donc il y a Une interface, qui est mis en œuvre de façon native par AOperations, et AImpl juste délégués de l'appel de méthode à des méthodes indigènes.
Ces relations sont auto-générés. Tout est ok, mais j'ai de stand avant le problème. Parfois, l'interface comme Un besoin d'exposer itérateur capacité. Je peux toucher de l'interface, mais ne peut pas changer la mise en œuvre (AImpl).
Dire en C# je pourrais être en mesure de résoudre le problème par partielles simples:
(Exemple C#)
partial class AImpl{
... //here comes auto generated code
}
partial class AImpl{
... //here comes MY implementation of
... //Iterator
}
Donc, a java analogique partielle ou quelque chose du genre.
ÉDITÉ:
Selon le commentaire de @pgras j'ai besoin de quelques éclaircissements. AImpl n'est pas dans le vide, il y a une partie d'usine (natif de mise en œuvre) qui retourne l'instance de AImpl, c'est pourquoi la création de l'héritage de AImpl, n'est pas applicable.
ÉDITÉ 2:
Peut-être cela ne rapporte pas, mais la façon dont c'est fait par JUnit 4:
public class SomeTest {
...
//there is no direct inheritance from Assert, but I can use follow:
assertTrue(1==1); //HOW DOES it works??
assertTrue
est une méthode statique dans Assert
. Il y aura une import static org.junit.Assert.*
ou quelque part. Comme tout est statique, il ne sera pas vraiment vous aider.
OriginalL'auteur Dewfy | 2010-03-23
Vous devez vous connecter pour publier un commentaire.
Java n'ont pas de soutien pour les partiels ou l'ouverture des classes. D'autres JVM langues, mais pas en Java. Dans votre exemple, la chose la plus simple peut malheureusement être à utiliser la délégation. Vous pouvez avoir votre AImpl prendre un autre objet qui répond à une interface de ces méthodes d'extension. L'généré AImpl serait alors ont généré des méthodes telles que l'itérateur méthodes qu'il peut déléguer à l'utilisateur de l'objet créé, vous passer.
Thread(Runnable runnable)
constructeur œuvres.Leggett, ok peut-être qu'il n'a pas trait à ma question principale, mais comment pouvez travailler la syntaxe de mon ÉDITÉ 2
Comme Chris Smith a dit, c'est une méthode statique, à l'aide d'une statique à l'importation pour regarder de plus local.
OriginalL'auteur Russell Leggett
fichier Compute.java
fichier de Calcul$.java
fichier de Calcul$Add.java
fichier de Calcul$Sub.java
OriginalL'auteur Max Mba
Vous pouvez étendre Un (disons de l'interface B extends A) et d'étendre AImpl et de mettre en œuvre B (classe BImpl s'étend AImpl met en œuvre B)...
OriginalL'auteur pgras