Superpackages (JSR 294)

7 respostas
renatosilva

JSR: http://jcp.org/en/jsr/detail?id=294

http://blogs.sun.com/andreas/entry/superpackages_in_jsr_294

http://blogs.sun.com/gbracha/entry/developing_modules_for_development

Meu Deus, quando é que eles vão parar de bitolar o Java? Eu acho que eu sou muito lezado, porque eu não vejo necessidade de adicionar essa bizarrice na linguagem, pelo o que eu enetendo um novo modificador de classe já seria o bastante, ou pelo faria boa parte do que toda essa zona sintática!

7 Respostas

nbluis

Eu pensei que ja tinha visto tudo…

hehehe…

renatosilva

Isso é porque você ainda não viu isso:

method receivers:
public int size() @Readonly { ... }

generic type arguments:
Map<@NonNull String, @NonEmpty List<@Readonly Document>> files;

arrays:
Document[@Readonly] docs1;
Document[][@Readonly] docs2 = new Document[2][@Readonly 12];
(docs1 is an unmodifiable one-dimensional array of mutable Documents.
docs2 is a mutable array whose elements are unmodifiable one-dimensional arrays of mutable Documents.)

typecasts:
myString = (@NonNull String)myObject;

type tests:
boolean isNonNull = myString instanceof @NonNull String;

object creation:
new @NonEmpty @Readonly List(myNonEmptyStringSet)

type parameter bounds:
class Folder { ... }

class inheritance:
class UnmodifiableList implements @Readonly List<@Readonly T> { ... }

throws clauses:
void monitorTemperature() throws @Critical TemperatureException { ... }
T

Eu acho é que isso é bem útil.
Eu acho um pesadelo quando eu tenho um monte de métodos que tenho de tornar públicos, só porque eu tenho de acessá-los em outros packages do mesmo produto para efeitos de implementação.
(Digo que é um pesadelo porque volta e meia alguém usa os métodos quando não deveria).
Gostaria é de deixar esses métodos acessíveis apenas dentro do produto (não queria deixar tudo em um mesmo “package”.)

renatosilva

Sim thingol, mas eu não entendi qual é o problema de, em vez de tudo isso, adicionar um novo modificador proteceted para as classes?

Rodrigo_Carvalho_Aul

O C# tem o modificador internal que deixa visível só dentro do mesmo assembly (dll). O java poderia ter um que deixasse visível só dentro do jar, já me atenderia perfeitamente.

[]'s

Rodrigo Auler

renatosilva

A JSR 308 pra mim foi a gota d’água! Agora é zorra total!

ViniGodoy

Ok, mas já viu a quantidade de modificadores de visibilidade você tem na IL? E alguns deles podem ser combinados e, se um programador não os conhecer muito bem, pode ficar realmente confuso.

Lógico, para o programador experiente e disciplinado, coisas como essa são sempre boas…

Criado 17 de abril de 2007
Ultima resposta 18 de abr. de 2007
Respostas 7
Participantes 5