ЙАЖА / Говнокод #27197 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
This would raise the true nightmare. A type variable is a different beast than the actual type of a concrete instance. 
A type variable could resolve to a, e.g. ? extends Comparator<? super Number> to name one (rather simple) example. 
Providing the necessary meta information would imply that not only object allocation becomes much more expensive, 
every single method invocation could impose these additional cost, to an even bigger extend as we are now not only 
talking about the combination of generic classes with actual classes, but also every possible wildcarded combination, 
even of nested generic types.

https://stackoverflow.com/a/38060012

Джавист-долбоеб с пеной у рта защищает type erasure, задавая вопросы "Does it [c#] have an equivalent of Function.identity()? " в комментариях и собирая плюсы таких же поехавших.
В качестве аргументов он предлагает:

1) сложна
2) хранить информацию о типах в рантайме означает что в рантайме придется хранить информацию о типах!!!
3) [s]ма-те-ма-ти-ка[/x] реф-лек-си-я

Причем ведь наверняка знает и про темплейты в крестах, и про то что шарп такой хуйней не страдает.

Fike Fike, (Updated )

Комментарии (10, +10)

ЙАЖА / Говнокод #27101 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
package java.util;

public final class Optional<T> {
    public<U> Optional<U> map(Function<? super T, ? extends U> mapper) {
        Objects.requireNonNull(mapper);
        if (!isPresent())
            return empty();
        else {
            return Optional.ofNullable(mapper.apply(value));
        }
    }
}

Они не только не знают, что else после if не нужен и лишь привносит лишний нестинг, они даже единый стиль расставления фигурных скобок выдержать не могут

Fike Fike, (Updated )

Комментарии (8, +8)

ЙАЖА / Говнокод #27047 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
package java.nio.file;

public final class Files {
    /**
     * Convert a Closeable to a Runnable by converting checked IOException
     * to UncheckedIOException
     */
    private static Runnable asUncheckedRunnable(Closeable c) {
        return () -> {
            try {
                c.close();
            } catch (IOException e) {
                throw new UncheckedIOException(e);
            }
        };
    }
}

стандартные потрошки джавы это какая-то запредельная протомразь, нарушающая собственные законы физики и запрещающая делать это другим

Fike Fike, (Updated )

Комментарии (29, +29)

ЙАЖА / Говнокод #27044 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
var io = java.io
var BufferedReader = io.BufferedReader
var BufferedWriter = io.BufferedWriter
var InputStreamReader = io.InputStreamReader
var OutputStreamWriter = io.OutputStreamWriter

var Socket = java.net.Socket
var socket = new Socket("localhost", 5050)
var input = new BufferedReader(new InputStreamReader(socket.getInputStream()))
var output = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

while(true){
  var data = input.readLine()
  console.log(data)
}

Один петух написал мне в три часа ночи с прозьбой помочь с кодом

digitalEugene digitalEugene, (Updated )

Комментарии (85, +85)

ЙАЖА / Говнокод #27041 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
final class Point {
    public final int x;
    public final int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    // state-based implementations of equals, hashCode, toString
    // nothing else

}

is "just" the data (x, y). Its representation is (x, y), its construction protocol accepts an (x, y) pair and stores it directly into the representation,
it provides unmediated access to that representation, and derives the core Object methods directly from that representation.
And in the middle, there are grey areas where we're going to have to draw a line.

Other OO languages have explored compact syntactic forms for modeling data-oriented classes: case classes in Scala, data classes in Kotlin, and record classes in C#.
These have in common that some or all of the state of a class can be described directly in the class header -- though they vary in their semantics
(such as constraints on the mutability or accessibility of fields, extensibility of the class, and other restrictions.)

Committing in the class declaration to at least part of the relationship between state and interface enables suitable defaults to be derived for many common members.
All of these mechanisms (let's call them "data classes") seek to bring us closer to the goal of being able to define Point as something like:

record Point(int x, int y) { }

[u]https://openjdk.java.net/jeps/359
https://cr.openjdk.java.net/~briangoetz/amber/datum.html[u]

3.14159265 3.14159265, (Updated )

Комментарии (35, +35)

ЙАЖА / Говнокод #27011 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
[code]
            lengthMapping.put("pt", Float.valueOf(1f));
            // Not sure about 1.3, determined by experiementation.
            lengthMapping.put("px", Float.valueOf(1.3f));
            lengthMapping.put("mm", Float.valueOf(2.83464f));
            lengthMapping.put("cm", Float.valueOf(28.3464f));
            lengthMapping.put("pc", Float.valueOf(12f));
            lengthMapping.put("in", Float.valueOf(72f));
[/code]

MAPTbIwKA MAPTbIwKA, (Updated )

Комментарии (103, +103)

ЙАЖА / Говнокод #26991 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
public static <T> Comparator<T> reverseOrder(Comparator<T> cmp) {
    if (cmp == null)
        return reverseOrder();

    if (cmp instanceof ReverseComparator2)
        return ((ReverseComparator2<T>)cmp).cmp;

    return new ReverseComparator2<>(cmp);
}

кишки стандартной библиотеки йажи продолжают радовать, хорошо хоть нет ReverseComparatorFinal или ReverseComparatorBassBoostedByKirillXXL

Fike Fike, (Updated )

Комментарии (8, +8)

ЙАЖА / Говнокод #26976 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
/**
     * Change the zoom level to the specified value. Specify 0.0 to reset the
     * zoom level.
     *
     * @param zoomLevel The zoom level to be set.
     */
    public void setZoomLevel(double zoomLevel);

Когда-то я думал, что zoom 100% это 1.0. И что на zoom нужно умножать. Но оказалось, что я анскильный.

DypHuu_niBEHb DypHuu_niBEHb, (Updated )

Комментарии (23, +23)

ЙАЖА / Говнокод #26970 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
public void startLoginService(User paramUser) {
    if (paramUser != null) {
        Intent intent = new Intent((Context)this, LoginService.class);
        intent.putExtra("LOGIN_KEY", paramUser.getLogin());
        intent.putExtra("PASSWORD_KEY", String.valueOf(paramUser.getId()));
        startService(intent);
    }
}

GDMaster GDMaster, (Updated )

Комментарии (37, +37)

ЙАЖА / Говнокод #26969 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
public static UUID fromString(String name) {
        String[] components = name.split("-");
        if (components.length != 5)
            throw new IllegalArgumentException("Invalid UUID string: "+name);
        for (int i=0; i<5; i++)
            components[i] = "0x"+components[i];

        long mostSigBits = Long.decode(components[0]).longValue();
        mostSigBits <<= 16;
        mostSigBits |= Long.decode(components[1]).longValue();
        mostSigBits <<= 16;
        mostSigBits |= Long.decode(components[2]).longValue();

        long leastSigBits = Long.decode(components[3]).longValue();
        leastSigBits <<= 48;
        leastSigBits |= Long.decode(components[4]).longValue();

        return new UUID(mostSigBits, leastSigBits);
    }

без префикса "0x" написать рабочий код было невозможно, очевидно
это хоть починили

https://github.com/openjdk/jdk/blob/jdk8-b120/jdk/src/share/classes/java/util/UUID.java#L191-L209

Fike Fike, (Updated )

Комментарии (76, +76)