Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

The clearest way into the Universe is through a forest wilderness. -- John Muir


devel / comp.lang.java.programmer / how to add a method specific to builder of specific type only

SubjectAuthor
* how to add a method specific to builder of specific type onlymike
+- Re: how to add a method specific to builder of specific type onlyEric Sosman
+- Re: how to add a method specific to builder of specific type onlyArne Vajhøj
`- Re: how to add a method specific to builder of specific type onlyStefan Ram

1
how to add a method specific to builder of specific type only

<1b45ddda-a26e-467f-9cfe-0b0d7649a42bn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=54&group=comp.lang.java.programmer#54

  copy link   Newsgroups: comp.lang.java.programmer
X-Received: by 2002:a05:620a:915:: with SMTP id v21mr21829935qkv.449.1637936153572;
Fri, 26 Nov 2021 06:15:53 -0800 (PST)
X-Received: by 2002:a05:6830:1e4a:: with SMTP id e10mr28118681otj.58.1637936153310;
Fri, 26 Nov 2021 06:15:53 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.java.programmer
Date: Fri, 26 Nov 2021 06:15:53 -0800 (PST)
Injection-Info: google-groups.googlegroups.com; posting-host=83.253.144.66; posting-account=1c_fOgoAAADuOXlL0A4-T9PUmVHtMSYd
NNTP-Posting-Host: 83.253.144.66
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1b45ddda-a26e-467f-9cfe-0b0d7649a42bn@googlegroups.com>
Subject: how to add a method specific to builder of specific type only
From: mikaelpetterson@hotmail.com (mike)
Injection-Date: Fri, 26 Nov 2021 14:15:53 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 36
 by: mike - Fri, 26 Nov 2021 14:15 UTC

Hi,

I want to add a method that is specific to DeleteSubtreeBuilder .

SubtreeBuilders.createDeleteSubtree().appendOperation(OperType.DELETE)

I just cannot seem to be able to add:

appendOperation(OperType type) so it only appears in the DeteleSubtreeBuilder that SubtreeBuilders.createDeleteSubtree() returns.

All help appreciated.

br,

//mike

public final class SubtreeBuilders {
public static SubtreeBuilder<DeleteSubtree> createDeleteSubtree() {
return new DeleteSubtreeBuilder();
}


public static SubtreeBuilder<SetSubtree> createSetSubtree() {
return new SetSubtreeBuilder();
}

static class DeleteSubtreeBuilder extends AbstractSubtreeBuilder<DeleteSubtree>{

@Override
protected DeleteSubtree internalBuild() {
return new DeleteSubtreeImpl(this);
}

}

}

Re: how to add a method specific to builder of specific type only

<snr7sk$rgk$1@dont-email.me>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=55&group=comp.lang.java.programmer#55

  copy link   Newsgroups: comp.lang.java.programmer
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: esosman@comcast-dot-net.invalid (Eric Sosman)
Newsgroups: comp.lang.java.programmer
Subject: Re: how to add a method specific to builder of specific type only
Date: Fri, 26 Nov 2021 13:09:23 -0500
Organization: A noiseless patient Spider
Lines: 53
Message-ID: <snr7sk$rgk$1@dont-email.me>
References: <1b45ddda-a26e-467f-9cfe-0b0d7649a42bn@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 26 Nov 2021 18:09:24 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="fa3ea6c70da54eae392496ecf2db7d5e";
logging-data="28180"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/4H3HIuoTUgC784CwTZOoR"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.3.2
Cancel-Lock: sha1:huaHLhVgnhaYcy/xYk6Lhhhm2R4=
In-Reply-To: <1b45ddda-a26e-467f-9cfe-0b0d7649a42bn@googlegroups.com>
Content-Language: en-US
 by: Eric Sosman - Fri, 26 Nov 2021 18:09 UTC

On 11/26/2021 9:15 AM, mike wrote:
>
> I want to add a method that is specific to DeleteSubtreeBuilder .
>
> SubtreeBuilders.createDeleteSubtree().appendOperation(OperType.DELETE)
>
> I just cannot seem to be able to add:
>
> appendOperation(OperType type) so it only appears in the DeteleSubtreeBuilder that SubtreeBuilders.createDeleteSubtree() returns.

Since createDeleteSubtree() returns a SubtreeBuilder reference, the
only methods callable through that reference are those belonging to (or
inherited by) the SubtreeBuilder class. Even if the actual instance
returned happens to be a subclass with additional methods, you cannot
use a SubtreeBuilder reference to call them.

I'm not entirely sure what to suggest, since I'm not entirely sure
I understand what you're trying to do. One likely possibility, though,
is to change createDeleteSubtree() to return a DeleteSubtreeBuilder
instead of a "vanilla" SubtreeBuilder (assuming DeleteSubtreeBuilder
is a subclass of SubtreeBuilder, which isn't actually spelled out in
the code provided). If the class relationships aren't as I assume, I'm
afraid I don't know how to help.

> public final class SubtreeBuilders {
>
> public static SubtreeBuilder<DeleteSubtree> createDeleteSubtree() {
> return new DeleteSubtreeBuilder();
> }
>
>
> public static SubtreeBuilder<SetSubtree> createSetSubtree() {
> return new SetSubtreeBuilder();
> }
>
> static class DeleteSubtreeBuilder extends AbstractSubtreeBuilder<DeleteSubtree>{

(I'm guessing AbstractSubtreeBuilder is a subclass of SubtreeBuilder
or implements a SubtreeBuilder interface, but I can't be sure.)

>
> @Override
> protected DeleteSubtree internalBuild() {
> return new DeleteSubtreeImpl(this);
> }
>
> }
>
> }

--
esosman@comcast-dot-net.invalid
Look on my code, ye Hackers, and guffaw!

Re: how to add a method specific to builder of specific type only

<61a17823$0$693$14726298@news.sunsite.dk>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=56&group=comp.lang.java.programmer#56

  copy link   Newsgroups: comp.lang.java.programmer
Path: i2pn2.org!i2pn.org!paganini.bofh.team!news.dns-netz.com!news.freedyn.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!news-out.netnews.com!news.alt.net!fdc2.netnews.com!news.uzoreto.com!dotsrc.org!filter.dotsrc.org!news.dotsrc.org!not-for-mail
Date: Fri, 26 Nov 2021 19:13:15 -0500
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.3.2
Subject: Re: how to add a method specific to builder of specific type only
Content-Language: en-US
Newsgroups: comp.lang.java.programmer
References: <1b45ddda-a26e-467f-9cfe-0b0d7649a42bn@googlegroups.com>
From: arne@vajhoej.dk (Arne Vajhøj)
In-Reply-To: <1b45ddda-a26e-467f-9cfe-0b0d7649a42bn@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 96
Message-ID: <61a17823$0$693$14726298@news.sunsite.dk>
Organization: SunSITE.dk - Supporting Open source
NNTP-Posting-Host: ef96e663.news.sunsite.dk
X-Trace: 1637972003 news.sunsite.dk 693 arne@vajhoej.dk/68.9.63.232:56298
X-Complaints-To: staff@sunsite.dk
 by: Arne Vajhøj - Sat, 27 Nov 2021 00:13 UTC

On 11/26/2021 9:15 AM, mike wrote:
> I want to add a method that is specific to DeleteSubtreeBuilder .
>
> SubtreeBuilders.createDeleteSubtree().appendOperation(OperType.DELETE)
>
> I just cannot seem to be able to add:
>
> appendOperation(OperType type) so it only appears in the DeteleSubtreeBuilder that SubtreeBuilders.createDeleteSubtree() returns.

> public final class SubtreeBuilders {
>
> public static SubtreeBuilder<DeleteSubtree> createDeleteSubtree() {
> return new DeleteSubtreeBuilder();
> }
>
>
> public static SubtreeBuilder<SetSubtree> createSetSubtree() {
> return new SetSubtreeBuilder();
> }
>
> static class DeleteSubtreeBuilder extends AbstractSubtreeBuilder<DeleteSubtree>{
>
> @Override
> protected DeleteSubtree internalBuild() {
> return new DeleteSubtreeImpl(this);
> }
>
> }
>
> }

A method needs to be defined in the type returned.

So something like:

package november;

public class BuildFun {
static interface DeleteSubtree {
}
static class DeleteSubtreeImpl implements DeleteSubtree {
}
static interface SetSubtree {
}
static class SetSubtreeImpl implements SetSubtree {
}
static interface SubtreeBuilder<T> {
public T internalBuild();
}
static interface SubtreeBuilderWithAppend<T> extends SubtreeBuilder<T> {
public SubtreeBuilderWithAppend<T> appendOperation(int op);
}
static abstract class AbstractSubtreeBuilder<T> implements
SubtreeBuilder<T> {
}
static abstract class AbstractSubtreeBuilderWithAppend<T> implements
SubtreeBuilderWithAppend<T> {
}
static class DeleteSubtreeBuilder extends
AbstractSubtreeBuilderWithAppend<DeleteSubtree> {
@Override
public DeleteSubtree internalBuild() {
return new DeleteSubtreeImpl();
}
@Override
public SubtreeBuilderWithAppend<DeleteSubtree>
appendOperation(int op) {
return this;
}
}
static class SetSubtreeBuilder extends AbstractSubtreeBuilder<SetSubtree> {
@Override
public SetSubtree internalBuild() {
return new SetSubtreeImpl();
}
}
static class SubtreeBuilders {
public static SubtreeBuilderWithAppend<DeleteSubtree>
createDeleteSubtree() {
return new DeleteSubtreeBuilder();
}
public static SubtreeBuilder<SetSubtree> createSetSubtree() {
return new SetSubtreeBuilder();
}
}
public static void main(String[] args) {
SubtreeBuilders.createDeleteSubtree().appendOperation(0).internalBuild();
SubtreeBuilders.createSetSubtree().internalBuild();
}
}

Arne

PS: Do you really need such a complex type structure??

Re: how to add a method specific to builder of specific type only

<subtree-builder-20211127164408@ram.dialup.fu-berlin.de>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=57&group=comp.lang.java.programmer#57

  copy link   Newsgroups: comp.lang.java.programmer
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!3.eu.feeder.erje.net!feeder.erje.net!news2.arglkargh.de!news.karotte.org!fu-berlin.de!uni-berlin.de!not-for-mail
From: ram@zedat.fu-berlin.de (Stefan Ram)
Newsgroups: comp.lang.java.programmer
Subject: Re: how to add a method specific to builder of specific type only
Date: 27 Nov 2021 15:45:20 GMT
Organization: Stefan Ram
Lines: 36
Expires: 1 Mar 2022 11:59:58 GMT
Message-ID: <subtree-builder-20211127164408@ram.dialup.fu-berlin.de>
References: <1b45ddda-a26e-467f-9cfe-0b0d7649a42bn@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: news.uni-berlin.de 1sES+zmbw2WEsWL0FBwO2w5QqYk/Pfn+xvU1XewAUFi5fo
X-Copyright: (C) Copyright 2021 Stefan Ram. All rights reserved.
Distribution through any means other than regular usenet
channels is forbidden. It is forbidden to publish this
article in the Web, to change URIs of this article into links,
and to transfer the body without this notice, but quotations
of parts in other Usenet posts are allowed.
X-No-Archive: Yes
Archive: no
X-No-Archive-Readme: "X-No-Archive" is set, because this prevents some
services to mirror the article in the web. But the article may
be kept on a Usenet archive server with only NNTP access.
X-No-Html: yes
Content-Language: en-US
Accept-Language: de-DE, en-US, it, fr-FR
 by: Stefan Ram - Sat, 27 Nov 2021 15:45 UTC

mike <mikaelpetterson@hotmail.com> writes:
>I just cannot seem to be able to add:
>appendOperation(OperType type) so it only appears in the DeteleSubtreeBuilder that SubtreeBuilders.createDeleteSubtree() returns.

I don't understand what this is all about,
but the following program compiles here:

Main.java

class AbstractSubtreeBuilder<X> {}
class SubtreeBuilder<X> extends AbstractSubtreeBuilder<X> {}
class DeleteSubtree {}
class SetSubtree {}
class OperType {}

final class SubtreeBuilders
{
static class DeleteSubtreeBuilder extends
SubtreeBuilder< DeleteSubtree >
{ void appendOperation( OperType type ){} }

static class SetSubtreeBuilder extends SubtreeBuilder< SetSubtree >
{}

public static SubtreeBuilder< DeleteSubtree >createDeleteSubtree()
{ return new DeleteSubtreeBuilder(); }

public static SubtreeBuilder< SetSubtree >createSetSubtree()
{ return new SetSubtreeBuilder(); }}

public final class Main
{ public static void main( final java.lang.String[] args ) {} }

.

1
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor