diff --git a/jOOQ-website/src/main/resources/manual-3.0.xml b/jOOQ-website/src/main/resources/manual-3.0.xml
index 2f76c77eba..091b48ed30 100644
--- a/jOOQ-website/src/main/resources/manual-3.0.xml
+++ b/jOOQ-website/src/main/resources/manual-3.0.xml
@@ -9072,6 +9072,7 @@ SERVER = new RemoteDebuggerServer(DEBUGGER_PORT);
Quantified comparison predicates (no deprecation yet)
Master data types have been removed
GroupField
+ ? extends T has been relaxed, e.g. for casting, Field.getType(), etc.
Object renames
diff --git a/jOOQ/src/main/java/org/jooq/DataType.java b/jOOQ/src/main/java/org/jooq/DataType.java
index 7251c76afe..a5826d7d1f 100644
--- a/jOOQ/src/main/java/org/jooq/DataType.java
+++ b/jOOQ/src/main/java/org/jooq/DataType.java
@@ -72,7 +72,7 @@ public interface DataType extends Serializable {
/**
* Retrieve the Java type associated with this data type
*/
- Class extends T> getType();
+ Class getType();
/**
* Retrieve a Java type associated with this data type and precision/scale
@@ -82,7 +82,7 @@ public interface DataType extends Serializable {
/**
* Retrieve the Java type associated with ARRAYs of this data type
*/
- Class extends T[]> getArrayType();
+ Class getArrayType();
/**
* Retrieve the data type for an ARRAY of this data type
diff --git a/jOOQ/src/main/java/org/jooq/Field.java b/jOOQ/src/main/java/org/jooq/Field.java
index 8940a2fbf7..9c0632df1a 100644
--- a/jOOQ/src/main/java/org/jooq/Field.java
+++ b/jOOQ/src/main/java/org/jooq/Field.java
@@ -92,7 +92,7 @@ public interface Field extends GroupField {
/**
* The Java type of the field.
*/
- Class extends T> getType();
+ Class getType();
/**
* The type of this field (might not be dialect-specific)
@@ -170,7 +170,7 @@ public interface Field extends GroupField {
* @see #cast(DataType)
*/
@Support
- Field cast(Class extends Z> type);
+ Field cast(Class type);
// ------------------------------------------------------------------------
// Conversion of field into a sort field
diff --git a/jOOQ/src/main/java/org/jooq/Parameter.java b/jOOQ/src/main/java/org/jooq/Parameter.java
index 79e330e0d4..99588400a4 100644
--- a/jOOQ/src/main/java/org/jooq/Parameter.java
+++ b/jOOQ/src/main/java/org/jooq/Parameter.java
@@ -54,7 +54,7 @@ public interface Parameter extends QueryPart {
/**
* The Java type of the parameter.
*/
- Class extends T> getType();
+ Class getType();
/**
* The type of this parameter (might not be dialect-specific)
diff --git a/jOOQ/src/main/java/org/jooq/UDT.java b/jOOQ/src/main/java/org/jooq/UDT.java
index cd1b4e5770..cca94387eb 100644
--- a/jOOQ/src/main/java/org/jooq/UDT.java
+++ b/jOOQ/src/main/java/org/jooq/UDT.java
@@ -57,7 +57,7 @@ public interface UDT> extends FieldProvider, QueryPart {
/**
* @return The record type produced by this table
*/
- Class extends R> getRecordType();
+ Class getRecordType();
/**
* The UDT's data type as known to the database
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java
index bd1608340b..83e9dd9623 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java
@@ -89,11 +89,11 @@ public abstract class AbstractDataType implements DataType {
private final SQLDialect dialect;
private final SQLDataType sqlDataType;
- private final Class extends T> type;
+ private final Class type;
private final String castTypeName;
private final String typeName;
- private final Class extends T[]> arrayType;
+ private final Class arrayType;
private final boolean hasPrecisionAndScale;
@@ -111,19 +111,19 @@ public abstract class AbstractDataType implements DataType {
sqlDataTypesByType = new LinkedHashMap, DataType>>();
}
- protected AbstractDataType(SQLDialect dialect, SQLDataType sqldatatype, Class extends T> type, String typeName) {
+ protected AbstractDataType(SQLDialect dialect, SQLDataType sqldatatype, Class type, String typeName) {
this(dialect, sqldatatype, type, typeName, typeName, false);
}
- protected AbstractDataType(SQLDialect dialect, SQLDataType sqldatatype, Class extends T> type, String typeName, String castTypeName) {
+ protected AbstractDataType(SQLDialect dialect, SQLDataType sqldatatype, Class type, String typeName, String castTypeName) {
this(dialect, sqldatatype, type, typeName, castTypeName, false);
}
- protected AbstractDataType(SQLDialect dialect, SQLDataType sqldatatype, Class extends T> type, String typeName, boolean hasPrecisionAndScale) {
+ protected AbstractDataType(SQLDialect dialect, SQLDataType sqldatatype, Class type, String typeName, boolean hasPrecisionAndScale) {
this(dialect, sqldatatype, type, typeName, typeName, hasPrecisionAndScale);
}
- protected AbstractDataType(SQLDialect dialect, SQLDataType sqlDataType, Class extends T> type, String typeName, String castTypeName, boolean hasPrecisionAndScale) {
+ protected AbstractDataType(SQLDialect dialect, SQLDataType sqlDataType, Class type, String typeName, String castTypeName, boolean hasPrecisionAndScale) {
this.dialect = dialect;
// [#858] SQLDataTypes should reference themselves for more convenience
@@ -132,7 +132,7 @@ public abstract class AbstractDataType implements DataType {
this.typeName = typeName;
this.castTypeName = castTypeName;
this.hasPrecisionAndScale = hasPrecisionAndScale;
- this.arrayType = (Class extends T[]>) Array.newInstance(type, 0).getClass();
+ this.arrayType = (Class) Array.newInstance(type, 0).getClass();
init();
}
@@ -282,7 +282,7 @@ public abstract class AbstractDataType implements DataType {
}
@Override
- public final Class extends T> getType() {
+ public final Class getType() {
return type;
}
@@ -297,7 +297,7 @@ public abstract class AbstractDataType implements DataType {
}
@Override
- public final Class extends T[]> getArrayType() {
+ public final Class getArrayType() {
return arrayType;
}
@@ -426,7 +426,7 @@ public abstract class AbstractDataType implements DataType {
return result;
}
- protected static DataType getDataType(SQLDialect dialect, Class extends T> type) {
+ protected static DataType getDataType(SQLDialect dialect, Class type) {
// Recurse for arrays
if (byte[].class != type && type.isArray()) {
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractField.java b/jOOQ/src/main/java/org/jooq/impl/AbstractField.java
index f6df3026fc..343c62b00c 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractField.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractField.java
@@ -133,7 +133,7 @@ abstract class AbstractField extends AbstractQueryPart implements Field {
}
@Override
- public final Class extends T> getType() {
+ public final Class getType() {
return dataType.getType();
}
@@ -160,7 +160,7 @@ abstract class AbstractField extends AbstractQueryPart implements Field {
}
@Override
- public final Field cast(Class extends Z> type) {
+ public final Field cast(Class type) {
return cast(SQLDataType.getDataType(null, type));
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDataType.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDataType.java
index baf7533c0c..5c6fa40df7 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DefaultDataType.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDataType.java
@@ -50,7 +50,7 @@ class DefaultDataType extends AbstractDataType {
*/
private static final long serialVersionUID = -2612295936942892367L;
- DefaultDataType(SQLDialect dialect, Class extends T> type, String typeName, String castTypeName) {
+ DefaultDataType(SQLDialect dialect, Class type, String typeName, String castTypeName) {
super(dialect, null, type, typeName, castTypeName);
}
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/Factory.java b/jOOQ/src/main/java/org/jooq/impl/Factory.java
index 465edba2cf..3b74defb62 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Factory.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Factory.java
@@ -1196,7 +1196,7 @@ public class Factory {
* @return The cast field
*/
@Support
- public static Field cast(Object value, Class extends T> type) {
+ public static Field cast(Object value, Class type) {
return val(value, type).cast(type);
}
@@ -1233,7 +1233,7 @@ public class Factory {
* @return The cast field
*/
@Support
- public static Field castNull(Class extends T> type) {
+ public static Field castNull(Class type) {
return NULL().cast(type);
}
@@ -1246,7 +1246,7 @@ public class Factory {
* @return The cast fields
*/
@SuppressWarnings("unchecked")
- static Field[] castAll(Class extends T> type, Field>... fields) {
+ static Field[] castAll(Class type, Field>... fields) {
Field>[] castFields = new Field>[fields.length];
for (int i = 0; i < fields.length; i++) {
@@ -4449,7 +4449,7 @@ public class Factory {
* @see #param(String, Object)
*/
@Support
- public static Param param(String name, Class extends T> type) {
+ public static Param param(String name, Class type) {
return param(name, SQLDataType.getDataType(null, type));
}
@@ -4503,7 +4503,7 @@ public class Factory {
* @see #val(Object, Class)
*/
@Support
- public static Field value(Object value, Class extends T> type) {
+ public static Field value(Object value, Class type) {
return val(value, type);
}
@@ -4611,7 +4611,7 @@ public class Factory {
* @see #val(Object, Class)
*/
@Support
- public static Param inline(Object value, Class extends T> type) {
+ public static Param inline(Object value, Class type) {
// [#1309] TODO, make this type-safe
Param val = (Param) val(value, type);
val.setInline(true);
@@ -4714,7 +4714,7 @@ public class Factory {
* @see #val(Object, DataType)
*/
@Support
- public static Field val(Object value, Class extends T> type) {
+ public static Field val(Object value, Class type) {
return val(value, getDataType(type));
}
@@ -5145,7 +5145,7 @@ public class Factory {
*/
@SuppressWarnings("deprecation")
@Support
- public static DataType getDataType(Class extends T> type) {
+ public static DataType getDataType(Class type) {
return FieldTypeHelper.getDataType(SQLDialect.SQL99, type);
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/FieldTypeHelper.java b/jOOQ/src/main/java/org/jooq/impl/FieldTypeHelper.java
index aa90ae1db1..bfff991cbd 100644
--- a/jOOQ/src/main/java/org/jooq/impl/FieldTypeHelper.java
+++ b/jOOQ/src/main/java/org/jooq/impl/FieldTypeHelper.java
@@ -118,7 +118,7 @@ public final class FieldTypeHelper {
@SuppressWarnings("unchecked")
public static T getFromSQLInput(Configuration configuration, SQLInput stream, Field field) throws SQLException {
- Class extends T> type = field.getType();
+ Class type = field.getType();
DataType dataType = field.getDataType();
if (type == Blob.class) {
@@ -229,12 +229,10 @@ public final class FieldTypeHelper {
}
public static void writeToSQLOutput(SQLOutput stream, Field field, T value) throws SQLException {
- Class extends T> type = field.getType();
-
- writeToSQLOutput(stream, type, field.getDataType(), value);
+ writeToSQLOutput(stream, field.getType(), field.getDataType(), value);
}
- private static void writeToSQLOutput(SQLOutput stream, Class extends T> type, DataType dataType, T value) throws SQLException {
+ private static void writeToSQLOutput(SQLOutput stream, Class type, DataType dataType, T value) throws SQLException {
if (value == null) {
stream.writeObject(null);
}
@@ -376,7 +374,7 @@ public final class FieldTypeHelper {
}
@SuppressWarnings("unchecked")
- private static T getFromResultSet(ExecuteContext ctx, Class extends T> type, int index)
+ private static T getFromResultSet(ExecuteContext ctx, Class type, int index)
throws SQLException {
ResultSet rs = ctx.resultSet();
@@ -390,7 +388,7 @@ public final class FieldTypeHelper {
else if (type == BigInteger.class) {
// The SQLite JDBC driver doesn't support BigDecimals
if (ctx.getDialect() == SQLDialect.SQLITE) {
- return Convert.convert(rs.getString(index), (Class extends T>) BigInteger.class);
+ return Convert.convert(rs.getString(index), (Class) BigInteger.class);
}
else {
BigDecimal result = rs.getBigDecimal(index);
@@ -400,7 +398,7 @@ public final class FieldTypeHelper {
else if (type == BigDecimal.class) {
// The SQLite JDBC driver doesn't support BigDecimals
if (ctx.getDialect() == SQLDialect.SQLITE) {
- return Convert.convert(rs.getString(index), (Class extends T>) BigDecimal.class);
+ return Convert.convert(rs.getString(index), (Class) BigDecimal.class);
}
else {
return (T) rs.getBigDecimal(index);
@@ -663,7 +661,7 @@ public final class FieldTypeHelper {
}
@SuppressWarnings("unchecked")
- private static T getEnumType(Class extends T> type, String literal) throws SQLException {
+ private static T getEnumType(Class type, String literal) throws SQLException {
try {
Object[] list = (Object[]) type.getMethod("values").invoke(type);
@@ -683,7 +681,7 @@ public final class FieldTypeHelper {
}
@SuppressWarnings("unchecked")
- public static T getFromStatement(ExecuteContext ctx, Class extends T> type, int index) throws SQLException {
+ public static T getFromStatement(ExecuteContext ctx, Class type, int index) throws SQLException {
CallableStatement stmt = (CallableStatement) ctx.statement();
if (type == Blob.class) {
@@ -882,7 +880,7 @@ public final class FieldTypeHelper {
}
}
- public static DataType getDataType(SQLDialect dialect, Class extends T> type) {
+ public static DataType getDataType(SQLDialect dialect, Class type) {
switch (dialect) {
case ASE:
return ASEDataType.getDataType(type);
@@ -931,7 +929,7 @@ public final class FieldTypeHelper {
// -------------------------------------------------------------------------
@SuppressWarnings("unchecked")
- private static T pgFromString(Class extends T> type, String string) throws SQLException {
+ private static T pgFromString(Class type, String string) throws SQLException {
if (string == null) {
return null;
}
@@ -1055,7 +1053,7 @@ public final class FieldTypeHelper {
* Workarounds for the unimplemented Postgres JDBC driver features
*/
@SuppressWarnings("unchecked")
- private static T pgGetArray(ExecuteContext ctx, Class extends T> type, int index)
+ private static T pgGetArray(ExecuteContext ctx, Class type, int index)
throws SQLException {
ResultSet rs = ctx.resultSet();
diff --git a/jOOQ/src/main/java/org/jooq/impl/ParameterImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParameterImpl.java
index 6913820771..79f8a261ef 100644
--- a/jOOQ/src/main/java/org/jooq/impl/ParameterImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/ParameterImpl.java
@@ -77,7 +77,7 @@ class ParameterImpl extends AbstractQueryPart implements Parameter {
}
@Override
- public final Class extends T> getType() {
+ public final Class getType() {
return type.getType();
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/SQLDataType.java b/jOOQ/src/main/java/org/jooq/impl/SQLDataType.java
index fe1d83d33c..eda62e4d5c 100644
--- a/jOOQ/src/main/java/org/jooq/impl/SQLDataType.java
+++ b/jOOQ/src/main/java/org/jooq/impl/SQLDataType.java
@@ -327,11 +327,11 @@ public final class SQLDataType extends AbstractDataType {
} catch (Exception ignore) {}
}
- private SQLDataType(Class extends T> type, String typeName) {
+ private SQLDataType(Class type, String typeName) {
this(type, typeName, false);
}
- private SQLDataType(Class extends T> type, String typeName, boolean hasPrecisionAndScale) {
+ private SQLDataType(Class type, String typeName, boolean hasPrecisionAndScale) {
super(null, null, type, typeName, hasPrecisionAndScale);
}
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java b/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java
index effcb830b7..7048e97aa7 100644
--- a/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/UDTImpl.java
@@ -87,7 +87,7 @@ public class UDTImpl> extends AbstractFieldProviderQueryP
* parameter for other types than {@link Record}
*/
@Override
- public Class extends R> getRecordType() {
+ public Class getRecordType() {
throw new UnsupportedOperationException();
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/Utils.java b/jOOQ/src/main/java/org/jooq/impl/Utils.java
index b2bf19bfe1..7d4a0a9d7b 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Utils.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Utils.java
@@ -549,7 +549,8 @@ final class Utils {
result.add((QueryPart) substitute);
}
else {
- Class> type = substitute != null ? substitute.getClass() : Object.class;
+ @SuppressWarnings("unchecked")
+ Class