Created
August 27, 2024 11:19
-
-
Save eggfly/10c5a6ad57e3962caebe0f0279165533 to your computer and use it in GitHub Desktop.
TypeErasure Interesting Code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example; | |
import java.util.*; | |
public class TestErase { | |
public static class MyJsonObject implements Map<String, Object> { | |
@Override | |
public int size() { | |
return 0; | |
} | |
@Override | |
public boolean isEmpty() { | |
return false; | |
} | |
@Override | |
public boolean containsKey(Object key) { | |
return false; | |
} | |
@Override | |
public boolean containsValue(Object value) { | |
return false; | |
} | |
@Override | |
public Object get(Object key) { | |
return null; | |
} | |
@Override | |
public Object put(String key, Object value) { | |
return null; | |
} | |
@Override | |
public Object remove(Object key) { | |
return null; | |
} | |
@Override | |
public void putAll(Map<? extends String, ?> m) { | |
} | |
@Override | |
public void clear() { | |
} | |
@Override | |
public Set<String> keySet() { | |
return Set.of(); | |
} | |
@Override | |
public Collection<Object> values() { | |
return List.of(); | |
} | |
@Override | |
public Set<Entry<String, Object>> entrySet() { | |
return Set.of(); | |
} | |
} | |
private static class MyCallback implements MyInterface { | |
@Override | |
public void onEvent(Event event) { | |
MyJsonObject j = new MyJsonObject(); | |
event.setMap(j); | |
} | |
} | |
public static <T> void test() { | |
var myInterface = new MyInterface() { | |
@Override | |
public void onEvent(Event event) { | |
MyJsonObject j = new MyJsonObject(); | |
event.setMap(j); | |
} | |
}; | |
new MyInterface<Object>() { | |
@Override | |
public void onEvent(Event event) { | |
MyJsonObject j = new MyJsonObject(); | |
event.setMap(j); | |
} | |
}; | |
new MyInterface<>() { | |
@Override | |
public void onEvent(Event<Object> event) { | |
MyJsonObject j = new MyJsonObject(); | |
// event.setMap(j); | |
} | |
}; | |
EventWithoutType a = new EventWithoutType(); | |
a.setMap(new HashMap<>()); | |
} | |
static class Event<T> { | |
void setMap(Map<String, String> data) { | |
} | |
} | |
static class EventWithoutType { | |
void setMap(Map<String, String> data) { | |
} | |
} | |
static interface MyInterface<T> { | |
void onEvent(Event<T> event); | |
// void onEvent(Event<Object> event); | |
// void onEvent(Event<Object> event); | |
// void onEventWithoutType(EventWithoutType event); | |
} | |
public static void test2() { | |
MyJsonObject j = new MyJsonObject(); | |
} | |
private static void sendEvent(Map<String, String> data) { | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment